{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "ExecuteTime": {
     "start_time": "2019-04-02T08:21:05.856Z"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "from sklearn import linear_model,model_selection\n",
    "os.chdir('E:/German_credit')\n",
    "%matplotlib inline\n",
    "from matplotlib.font_manager import FontProperties\n",
    "font=FontProperties(fname=r\"C:\\\\Windows\\\\Fonts\\\\msyh.ttf\",size=12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# 数据获取"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.253826Z",
     "start_time": "2019-04-01T06:33:09.233826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 21 columns):\n",
      "Creditability                        1000 non-null int64\n",
      "Account Balance                      1000 non-null int64\n",
      "Duration of Credit (month)           1000 non-null int64\n",
      "Payment Status of Previous Credit    1000 non-null int64\n",
      "Purpose                              1000 non-null int64\n",
      "Credit Amount                        1000 non-null int64\n",
      "Value Savings/Stocks                 1000 non-null int64\n",
      "Length of current employment         1000 non-null int64\n",
      "Instalment per cent                  1000 non-null int64\n",
      "Sex & Marital Status                 1000 non-null int64\n",
      "Guarantors                           1000 non-null int64\n",
      "Duration in Current address          1000 non-null int64\n",
      "Most valuable available asset        1000 non-null int64\n",
      "Age (years)                          1000 non-null int64\n",
      "Concurrent Credits                   1000 non-null int64\n",
      "Type of apartment                    1000 non-null int64\n",
      "No of Credits at this Bank           1000 non-null int64\n",
      "Occupation                           1000 non-null int64\n",
      "No of dependents                     1000 non-null int64\n",
      "Telephone                            1000 non-null int64\n",
      "Foreign Worker                       1000 non-null int64\n",
      "dtypes: int64(21)\n",
      "memory usage: 164.1 KB\n"
     ]
    }
   ],
   "source": [
    "Data=pd.read_csv('german_credit.csv',header=0)\n",
    "Data.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# 数据类型转换与数据描述"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "'Duration of Credit (month)','Credit Amount','Instalment per cent','Duration in Current address','Age (years)','No of Credits at this Bank','No of dependents'为连续性变量，其余均为类别型特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.324826Z",
     "start_time": "2019-04-01T06:33:09.257826Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "Data_object=Data.drop(['Duration of Credit (month)','Credit Amount','Age (years)'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.403826Z",
     "start_time": "2019-04-01T06:33:09.334826Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "Data_object=Data_object.astype('object')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.462826Z",
     "start_time": "2019-04-01T06:33:09.405826Z"
    },
    "hidden": true
   },
   "outputs": [],
   "source": [
    "Data_numeric=Data[['Duration of Credit (month)','Credit Amount','Age (years)']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.546826Z",
     "start_time": "2019-04-01T06:33:09.464826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 21)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "NewData=pd.concat([Data_object,Data_numeric],axis=1)\n",
    "NewData.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.616826Z",
     "start_time": "2019-04-01T06:33:09.548826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 21 columns):\n",
      "Creditability                        1000 non-null object\n",
      "Account Balance                      1000 non-null object\n",
      "Payment Status of Previous Credit    1000 non-null object\n",
      "Purpose                              1000 non-null object\n",
      "Value Savings/Stocks                 1000 non-null object\n",
      "Length of current employment         1000 non-null object\n",
      "Instalment per cent                  1000 non-null object\n",
      "Sex & Marital Status                 1000 non-null object\n",
      "Guarantors                           1000 non-null object\n",
      "Duration in Current address          1000 non-null object\n",
      "Most valuable available asset        1000 non-null object\n",
      "Concurrent Credits                   1000 non-null object\n",
      "Type of apartment                    1000 non-null object\n",
      "No of Credits at this Bank           1000 non-null object\n",
      "Occupation                           1000 non-null object\n",
      "No of dependents                     1000 non-null object\n",
      "Telephone                            1000 non-null object\n",
      "Foreign Worker                       1000 non-null object\n",
      "Duration of Credit (month)           1000 non-null int64\n",
      "Credit Amount                        1000 non-null int64\n",
      "Age (years)                          1000 non-null int64\n",
      "dtypes: int64(3), object(18)\n",
      "memory usage: 164.1+ KB\n"
     ]
    }
   ],
   "source": [
    "NewData.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.757826Z",
     "start_time": "2019-04-01T06:33:09.620826Z"
    },
    "code_folding": [
     0
    ],
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "      <th>账户状态</th>\n",
       "      <th>信用历史付款状况</th>\n",
       "      <th>资金用途</th>\n",
       "      <th>储蓄情况</th>\n",
       "      <th>工作年限</th>\n",
       "      <th>分期利率</th>\n",
       "      <th>婚姻状况</th>\n",
       "      <th>担保机构(类型)</th>\n",
       "      <th>现地址居住时间</th>\n",
       "      <th>...</th>\n",
       "      <th>共同账户(类型)</th>\n",
       "      <th>住房类型</th>\n",
       "      <th>信用卡数量</th>\n",
       "      <th>工作(类型)</th>\n",
       "      <th>担保人数量</th>\n",
       "      <th>是否有电话</th>\n",
       "      <th>是否外籍工作者</th>\n",
       "      <th>信用期限(月)</th>\n",
       "      <th>信贷金额</th>\n",
       "      <th>年龄</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>18</td>\n",
       "      <td>1049</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>9</td>\n",
       "      <td>2799</td>\n",
       "      <td>36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>9</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>841</td>\n",
       "      <td>23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>...</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2122</td>\n",
       "      <td>39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>12</td>\n",
       "      <td>2171</td>\n",
       "      <td>38</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  target 账户状态 信用历史付款状况 资金用途 储蓄情况 工作年限 分期利率 婚姻状况 担保机构(类型) 现地址居住时间 ... 共同账户(类型)  \\\n",
       "0      1    1        4    2    1    2    4    2        1       4 ...        3   \n",
       "1      1    1        4    0    1    3    2    3        1       2 ...        3   \n",
       "2      1    2        2    9    2    4    2    2        1       4 ...        3   \n",
       "3      1    1        4    0    1    3    3    3        1       2 ...        3   \n",
       "4      1    1        4    0    1    3    4    3        1       4 ...        1   \n",
       "\n",
       "  住房类型 信用卡数量 工作(类型) 担保人数量 是否有电话 是否外籍工作者 信用期限(月)  信贷金额  年龄  \n",
       "0    1     1      3     1     1       1      18  1049  21  \n",
       "1    1     2      3     2     1       1       9  2799  36  \n",
       "2    1     1      2     1     1       1      12   841  23  \n",
       "3    1     2      2     2     1       2      12  2122  39  \n",
       "4    2     2      2     1     1       2      12  2171  38  \n",
       "\n",
       "[5 rows x 21 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "states={'Creditability':'target', #目标变量，其中 1代表好客户（会还本付息）(未响应变量，或者说负类)，0则是代表坏客户(响应类别，或者说正类)\n",
    "        'Account Balance':'账户状态',\n",
    "        'Payment Status of Previous Credit':'信用历史付款状况',\n",
    "        'Purpose':'资金用途',\n",
    "        'Value Savings/Stocks':'储蓄情况',\n",
    "        'Length of current employment':'工作年限',\n",
    "        'Instalment per cent':'分期利率',\n",
    "        'Sex & Marital Status':'婚姻状况',\n",
    "        'Guarantors':'担保机构(类型)',\n",
    "        'Duration of Credit (month)':'信用期限(月)',\n",
    "        'Most valuable available asset':'财产状况',\n",
    "        'Concurrent Credits':'共同账户(类型)',\n",
    "        'Type of apartment':'住房类型',\n",
    "        'No of Credits at this Bank':'信用卡数量',\n",
    "        'Occupation':'工作(类型)',\n",
    "        'No of dependents':'担保人数量',\n",
    "        'Telephone':'是否有电话',\n",
    "        'Foreign Worker':'是否外籍工作者',\n",
    "        'Duration in Current address':'现地址居住时间',\n",
    "        'Credit Amount':'信贷金额',\n",
    "        'Age (years)':'年龄'}\n",
    "NewData.rename(columns=states,inplace=True)\n",
    "NewData.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:09.857826Z",
     "start_time": "2019-04-01T06:33:09.760826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>信用期限(月)</th>\n",
       "      <th>信贷金额</th>\n",
       "      <th>年龄</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1000.000000</td>\n",
       "      <td>1000.00000</td>\n",
       "      <td>1000.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>20.903000</td>\n",
       "      <td>3271.24800</td>\n",
       "      <td>35.54200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.058814</td>\n",
       "      <td>2822.75176</td>\n",
       "      <td>11.35267</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>250.00000</td>\n",
       "      <td>19.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>12.000000</td>\n",
       "      <td>1365.50000</td>\n",
       "      <td>27.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>18.000000</td>\n",
       "      <td>2319.50000</td>\n",
       "      <td>33.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>24.000000</td>\n",
       "      <td>3972.25000</td>\n",
       "      <td>42.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>72.000000</td>\n",
       "      <td>18424.00000</td>\n",
       "      <td>75.00000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           信用期限(月)         信贷金额          年龄\n",
       "count  1000.000000   1000.00000  1000.00000\n",
       "mean     20.903000   3271.24800    35.54200\n",
       "std      12.058814   2822.75176    11.35267\n",
       "min       4.000000    250.00000    19.00000\n",
       "25%      12.000000   1365.50000    27.00000\n",
       "50%      18.000000   2319.50000    33.00000\n",
       "75%      24.000000   3972.25000    42.00000\n",
       "max      72.000000  18424.00000    75.00000"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "NewData.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hidden": true
   },
   "source": [
    "先查看连续变量的直方图和箱线图分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:10.402826Z",
     "start_time": "2019-04-01T06:33:09.860826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+gAAAI4CAYAAAD56sN/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XtcVHX+x/H3DOAF8cJNDVKL1C0vZWqJlpdVNk1MzYe62aqrqw+3ZdNVWzfbWrUsY1PSTMrS0tUsdSttu60bkmKZDyGx9bJ5R5eERRgUQZEBzu8Pfh6cAB2VGQ72ej4ePh6cM+fymanH5zHv+X7POTbDMAwBAAAAAIAaZa/pAgAAAAAAAAEdAAAAAABLIKADAAAAAGABBHQAAAAAACyAgA4AAAAAgAUQ0OEiIyNDp06dMpeLi4t14sSJaj1HcXGxioqKqvWY3lJSUlLTJQCoZa62r546dUqlpaWSpNTUVEnSyZMnZZWHrtAHAVhJfn6+cnNzvXY+eiA8jYAOF3PnztX7779vLh8+fFj9+/fX+fPnr+u4o0eP1o4dOyRJ77//vmbNmlXltqWlpSosLDT/XfyieiVz5szRn//856uu7amnntJzzz1X6WuZmZn65S9/KcMwtH37dg0ZMuSKx0tOTtbf/va3y27zzTff6C9/+UuF9ZGRkUpPT3evcAC1wtX01aysLPXt21d79+6VJI0ZM0ZFRUVavXq1oqOjq+zFxcXFioqK0m233XbZfr1x40YlJCRcVf30QQBWtmDBgkp7SWXy8/MVGRnpsu7QoUO6//77q9yHHghv863pAmAdTqdTn3zyie644w5FRUWZ6x0OhwYOHCgfHx9J0l133aWbbrpJL7zwgho3bixJKiwsVF5enpo2bWrud/LkSR08eFC33HJLlecMDAxUq1atJEknTpzQhx9+KEkaNmyYWrZsqbS0NL377rsaPny4IiIizP0KCgrUu3dvrVy5UpJ09OhRrV69Wvv37ze36dOnjw4cOKC6detWOG96errS09PVvHlzzZkzR+3atdPo0aNdziFJv/vd79SjRw/ZbDZ1795dJ0+e1D//+U8NGDCgyve0YMEC9e7du8rXJenChQvKzc1Vfn6+y2e9b98+DR48WHXq1JEkRUdHq0OHDrLZbBo6dKjS0tJ0xx13mJ/ZRU6nU4GBgUpJSbnseQF419X01aeeekrR0dF66qmndOedd0qSunbtqr///e/q27evSkpK9P777yskJEQPPvigeayioiKNGzdOoaGh6tatm0aMGKH169fL39/f3Gbp0qV65513dPbsWf33v/9Vu3btFBwcLKfTqZMnTyotLU1NmzaVv7+/IiMjtXTpUnNf+iAAqzp//rzi4+NVt27dy/74+PLLL2vVqlVavny59u7dq65du+qhhx7S7NmztXr1agUEBGjnzp269957K+xLD4S3EdBh+vzzz9WrVy+NHz9eI0aMqHK7OnXq6O2339YTTzyhZ555RpK0ZcsWLVq0SBs3bjS369Spk3ncffv2afXq1dqyZYv+/e9/6+TJk9qxY4eCg4O1e/duSdK4cePMfQcPHqy3335bd9xxh3r06KGwsDBzROni+S6Gc0lasmSJJk2aVCGMb9iwocIvpZJcfjSoW7euJk2apCVLlujll18218fGxur06dOaPn26JMlms+ntt99WdHS0EhMT9bOf/UxS2Qj8hg0bJEl5eXnKy8vTd999p8WLF1c4b8+ePfX888/rzJkzSkxM1KZNm/SnP/3JnO66aNEiDRkyxPzhY8iQISoqKlLfvn1lt9t155136q677jJnI1yUlpam4cOHVzgfgJrlbl89ceKE7rvvPp0+fVqhoaHq3LmzbDab6tevr7Vr12r8+PEKCQlRRkaGLly4YO6XlpamsWPH6rbbbtOyZcvk6+urp59+Wvfdd5/eeecdtW/fXlLZNPuYmBhlZmaaPa1Lly7aunWrCgsL1a9fP33wwQdq0qSJGjZsaB6fPgjAymbPnq3f/va3ev755811AwYM0DPPPFNhVPzi7M0OHTqY/aOoqEgpKSlas2aNHn30UX3++eey28snGNMDURMI6JAkGYahuXPnKjo6WgEBAXr00UervEZy27ZtV3XsBx98UGvWrNGRI0d05swZ/fe//9V9992nyMhI5eTkmEH+xIkTLiE9MTFRkZGRatKkiU6ePGluJ5VNUbq08X722Wf64IMPrqquS0VHR2vEiBFmQH/ttdf01ltv6auvvjJHuKSyHx0u/ir67rvvqm/fvnrxxRf14osvqrS0VL1799Yf/vAHDR8+XCtWrNDYsWNd9pek559/XoWFherRo4c+++wzTZo0yRzpql+/vm677TaFhIRIkgICAhQaGqp//OMfmjFjhpYtW3bN7xGAd11NXx0/frzWr1+vJ554QnfccYd27dplvjZx4kTVqVNHzzzzjA4cOKA///nPGj16tF599VXFxcVpzpw5euyxx8ztX3jhBd11113q3bu3Ro8erenTp+vZZ5/VY489pk8++cScqRQXF6fHHntMqampql+/vh555BH973//04svvqjRo0fTBwFY2hdffKFPP/3UpV9erWeffVYDBw6U3W5Xnz59NHfuXM2ePVsS3wVRcwjokCStXbtW//nPfxQdHS1J+sc//nHFfV555RW98847kqRz584pNzdXt99+u/l6Wlqay/YTJ05Up06d9OmnnyojI0OSqhxBv1jTww8/LEkKCwszt5NcR9ALCwuVlpamdu3aVahxxIgRlU5x/+GHH1yW27dvr2PHjqmoqEhz587Vu+++q82bN6tZs2YV9h01apQaNGigESNG6De/+Y3mz58vqexX1rCwMPPXy6eeekqjRo2q0JSPHj2qXr166fTp0xowYIB+//vfm68ZhqGFCxfKZrNJklq0aKENGzaoS5cuSkxMrPCZArCua+mrd911V4We9cYbb2jOnDnma5MnT9bUqVOVl5en3/zmN1qwYIEWLFigc+fOqbS0VAEBAZLKetWFCxc0Z84cDRs2TGlpafr8888VEBCgIUOGmNPo16xZo8zMTEVERJg1/uUvf6EPArC0Bg0a6K233tLDDz/s8uPn8ePHNXbsWJfLfO6++24VFxfrzjvvVGFhoTp16qTi4mI1atRI8+fP1+TJk7VixQp1795dTZo0UXZ2Nj0QNYaADknS8uXLNWPGDPMuwf3799fx48cr3TY5OVlOp1NPPPGEZs6cKenyU9wvuvnmm9W6dWs1a9bMDOiXuwHc0KFDtWzZMg0dOvSyI+gOh0NBQUFmI7uosLBQH3/8cYU6JFW4Lt5msykoKEg5OTkaOHCgOnbs6HI90I898cQT2rNnj86cOSNJ+vTTTzV79mwFBgaaP1JkZ2frrrvuks1m07lz59SjRw+tXbtWderUUcuWLZWSkqJBgwapXr16LtP3L/L19dXjjz9uLufk5EiSvvvuO7Vs2dKcCpuRkaGbbrpJgYGBVdYLwPuutq82bNhQe/fu1c9//vNKtykqKtJzzz2nkSNHasKECWbPmzdvnqSyS30yMzNdpnpe9PHHH2vRokWaNGmS9u7dq2eeeUZBQUHm6wkJCerXr5+5TB8EYHU9evSQJB08eFApKSlq0qSJpMqnuJ85c0bFxcVKTEzUf//7X/32t7/Vxo0b1alTJ7Vv314vvPCCzpw5ow8//FBffvml7r33XnogagwBHZKkFStWKCkpSYcPH5ZUNmW8qkf6+Pr66vz582YjdNf48ePVoEED5ebmmtdiFhcXm3eqPHfunMv2gwYN0rRp0/S///1PYWFhSklJUWRkpJKTk7Vz50699dZbOn/+vOrVq+dyTeZF+fn5atCggdv1XTxW9+7d1b17d40cOVJpaWl68MEH9Z///Mfc7rnnnlNRUZHCwsIUFhambdu2aeLEiRo2bJjuuece/fGPf5QkNW/eXN99953q1aunhIQELV++XFLZzZq2bNliHm/t2rVq2bKlOnfu7FLPhAkTzKZ8/PhxRUZG6ttvv9Uf//hHderUSZ9//rlmzpypcePGacOGDVq0aJHb7xWA511tX5WkAwcOmKMjJ06c0KFDh8zgPG7cOPNGnDabTU8++aTLpT1nzpxRSUmJ1q5da677xS9+oddff11BQUGKjY01p0kuW7ZMDz/8sNkjL1y4oHr16pn70QcB3Eg+/vhjZWdny263Kz09Xd988422bNlijnxLUlRUlC5cuKDNmzcrLCyMHogaQ0CHJKlly5Yuy1OmTNHXX39dYbuGDRtq27ZtSk9P11tvvaU333xTkntT3FesWKHIyEitXbtWu3fv1pkzZ1RYWKg5c+ZIkssU9ovuvfdec72vr6/uv/9+ffHFF2rRooWSkpL00UcfaeTIkSoqKlJ+fr45tdMwDLOhVubHU9zz8/PldDor/Oiwa9cu8yZLF507d05hYWHm8jfffKO///3v+uqrryo9lzvee+89ffbZZxXOc9Hrr7+uESNGKCwsTHPnztXcuXN12223ma+HhobqhRdeuObzA6h+V9tXf2zv3r36/PPPXUa2LxUbG6vi4mLNmTNHDRs2dBlBz8/P1/Tp0/Xqq69KKgv7//nPf2Sz2cwvjqtWrTIfMZmVlaXg4OBKz0MfBHCj+Oijj3T+/Hm1bdvW5TJLSfr73/+ulStX6qabbnLZhx4IbyOgo1JHjhzRO++8ow4dOrisv/nmmyVJqampevfdd81HSFxuivvEiRO1d+/eCtcDnTp1Svfff7/5a+Kl16AXFRXp7NmzOn78uDmyJElPP/20HnzwQRUUFGjx4sV64IEHJJU9M/Krr74yH3nx5ZdfKjg42By5+rEfT3Hftm2bunfv7jJN3jAMLVmyRDExMS7bnj592vwhQJL+9Kc/SdJlm3JeXp7LXUF/bOHChRUe13Hxsz59+rTefvttJScnSyp7xNyKFSv00UcfuWyfmZmpb775xrxuH4C1XKmv/lhycrIKCwt14cKFSu+lYbPZZLPZ9Mgjj1S4vn3SpElq1aqV2T9HjRql+Ph4s0+NGzdOpaWl5uVB27dvl6+vrxo2bOgy84g+CMCqxo4dq507d8rX19fliT3p6en61a9+pfr165vrDh06pC5duqhnz54aOXKkJk6cqOjoaH388cdq1qyZGjdurGeffVZbt27luyBqXNX/lwBV+O6773T06FF169atym0Mw1B+fr7sdrvefPNN9enTRz169NDXX3+t5s2bm49n69+/v7nPhQsXzMaVkZGhTp06KSwsTD179jS3SU1N1TPPPKPmzZvrrrvuMtePGTPGvGmcYRiKjY3V2LFjK62toKBAZ86ccfnCu3LlSo0ZM8Zcdjqdmjx5soqLi/Xwww+b01ILCwv11VdfqXXr1m59Vu+9957Cw8M1evRo9erVq8rtpk2bpsjISJd/F69pmj9/vvr3769WrVopMzNTAwcO1NChQ9WxY0fZbDYVFRVJkvbv3+/y6DkAtc/atWuVk5OjefPm6b333pO/v786dOig3/72txo+fHiFvhsbG6tWrVopLy/PXJedna2AgAC3RlJeeeUVrVy5Uj/72c80YsQINWvWzPxiRx8EYGWrVq3S999/X+Hf/fffrzVr1ris+9vf/qYhQ4YoNjZW3bp100svvSRJatasmYYMGaL+/fvrrbfecplJRA9ETWEEHVUaPny4yzWJUtl12itXrtQTTzzh8pqPj4/q16+vI0eOqFOnTjIMQ23btlVYWJieeOIJnT59Wm+++abq1KmjjRs36qOPPlJSUpLi4+P1+uuvKy4uzvyVcs+ePWrVqpW+/PJLSWW/OObk5Ojee+/Vz372M61evVoXLlxQly5dNHPmTD3++OMaNWqUFi5cqN27d+vYsWM6evRohceuLVmyRE8//bScTqceeugh80YaqampOnDggHlH+p07d2rMmDHq2LGjPvnkE/n4+Khz5846fvy47Ha7hg4dqq5du1b4vCIiIirc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AE9xO6Dv2bNH7733ntq3b69evXrpnnvuKbtDOQCgAnomALjHE/1y06ZNSkpKUkREhMaOHauAgAA5HA61adPG3CYoKEgOh+N6yweAauV2QH/yySd19uxZff311/r000+1bNkydevWTb169VK7du08WSMA1Dr0TABwT3X3ywceeEDDhw+XJK1bt06rVq1STEzMVT315nof5fviE1N1Lv24uWyz2ar9qTsZx49LLRtW6zF/zBuP8q2NjwuuLrXxUbG1rebaVq90ldegN2zYUAMGDNCAAQN0/PhxLVmyRF9++aVCQkLUr18/DRw4UPXq1fNUrQBQq9AzAcA91dkvmzRpYv7dr18//fWvf5VU9pSgnJwc8zWHw6GgoKBKj3G9j/I9c+ywphmeHZ2fXnhekmcDujce5VsbHxdcXaz26Fp31LaarVSvu4/yveq7YuzZs0evvfaa5syZo8aNG+vxxx/X448/rmPHjmnevHlXXSgA3MjomQDgnurqlxcf4StJO3fuVIsWLSSVPSVo+/btcjqdysrKUkZGhlq3bl3t7wMArofbI+irVq3S9u3b5e/vr169eikuLs7lV8c2bdpo/PjxHikSAGobeiYAuOd6+uWiRYu0f/9+nT17Vo899phGjhypffv2KS0tTTabTaGhoZo0aZIkqUWLFurevbumT58uu92uCRMmcAd3AJbjdkB3Op364x//WOUvjb6+voqNja22wgCgNqNnAoB7rqdfTp06tcK6vn37VnmuYcOGadiwYddWKAB4gdsB/eGHH1adOnVc1uXn56uoqMj8lTM8PLx6qwOAWoqeCQDuoV8CQDm35/XMnz+/wqMoHA6HFixYUO1FAUBtR88EAPfQLwGgnNsB/eTJk2rZsqXLupYtW+qHH36o9qIAoLajZwKAe+iXAFDO7YDeqFEjZWZmuqzLzMxUw4aefbwDANRG9EwAcA/9EgDKuX0N+s9//nPFxcXpkUceUbNmzZSZmal169Zd9kYcAPBTRc8EAPfQLwGgnNsBfejQofL19dXq1auVk5Oj4OBg9e3bV4MGDfJkfQBQK9EzAcA99EsAKOd2QLfb7Ro8eLAGDx7syXoA4IZAzwQA99AvAaCc2wFdKruJR1pamgoLC13WMwUJACqiZwKAe+iXAFDG7YD+4Ycf6oMPPlCrVq1Ut25dl9dongDgip4JAO6hXwJAObcD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W7duSkxM9J7btnfvXr377ruSpJkzZ2rKlCmtrqGpfbuqqqpDtokvf8tuZBt8+eWXSktLU01NjcaOHav58+c3emurxurYuXOnDhw4oJCQEPXt21eJiYnq0aOHCgsLlZSUpOjoaEnS8OHDtWDBgmbba22f2lgd/tw/ffl701gtqamp+u677yRJFy9eVHh4uDZs2NCu2wStY+I4rCWmjtNaYto4riUmjvNaYto4sCVdZpxooU2OHj1qnTx50lq2bJl32c6dO63du3dblmVZu3fvtnbu3Nlh9ZSWllonT560LMuyLl68aC1ZssQ6c+ZMQGuqq6uzLl26ZFmWZbndbmvVqlXW8ePHrU2bNln/93//Z1mWZf32t7+1Pvjggw6rybIsa8+ePdbmzZutl156ybIsK+D1JCYmWuXl5fWWBfJzsyzLeuWVV6yMjAzLsq58dpWVlQGv6SqPx2M9/vjjVmFhoTE1dQUej8d68sknrbNnz1put9tavny5debMGb+20VQ/9dZbb1l/+tOfGqx/5swZa/ny5VZNTY117tw568knn7Q8Ho/favXlu3fgwAErOTnZqqurs44fP26tWrXKsizLunDhgrVo0SLrwoUL9f7/Rly7b3fUNvHlb9mNbIOVK1dax48ft+rq6qzk5GQrLy+v1XUcOnTIqq2t9dZ0tY5z587VW+9aTbXX2r6isTr8+Vn48vemsVqutWPHDuvtt99u922C1jFxHNYSU8dpLTFtHNcSE8d5LTF5HNiSzjxOZIp7G40aNarBLzA5OTmKi4uTJMXFxSknJ6fD6nE6nd4jGWFhYerfv79KS0sDWpPNZlP37t0lSR6PRx6PRzabTUePHvVeOXXKlCkdWlNJSYny8vI0bdo0SZJlWQGtpymB/NwuXryozz//XPfff78kKSQkRD169AhoTdc6cuSI+vXrpz59+hhTU1eQn5+vfv36qW/fvgoJCdGECRP8vj2b6qeakpOTowkTJshut+uWW25Rv379lJ+f3661NrVP5ebmavLkybLZbBoxYoSqqqpUVlamQ4cO6e6771ZERIQiIiJ0991369ChQzfU9rX7dnP1+XOb+PK3zNdtUFZWpkuXLmnEiBGy2WyaPHlykzU1Vsc999yj4OBgSdKIESOa3VckNdtea/uKxupoiq+fha9/b5qrxbIsffTRR5o4cWKzNfpjm6B1TByHtcTEcVpLOss4riUm7xemjwNb0pnHiebM++hCysvL5XQ6JV3pqCsqKgJSR2FhoU6dOqVhw4YFvKa6ujqtWLFCZ8+e1Q9/+EP17dtX4eHh3kFX7969Wxx0+dMbb7yhuXPn6tKlS5KkCxcuBLSeq5KTkyVJ06dPV3x8fEA/t8LCQvXs2VNbt27VV199pSFDhmjevHkB35eu2rdvn3dQakpNXUFpaamioqK8j6OiovTFF1+0W3vX9lN/+9vf9MEHHyg7O1tDhgzRz3/+c0VERKi0tFTDhw/3Pufa76e/am3td6+0tFQul6tem6WlpQ22W1v6kGv3bUkB2yb+2gaN7VM3um0yMzM1YcIE7+PCwkI988wzCgsL08MPP6yRI0c2215b+wp/fBb+/Hvz+eefy+Fw6NZbb/Uu6+htgqaZNA5riWnjtJaYOo5riUnjvJaYPg5sSWceJxLQu6jq6mpt2rRJ8+bNU3h4eKDLUVBQkDZs2KCqqipt3LhR3377bcBqOXDggBwOh4YMGaKjR48GrI7rrVu3Tr1791Z5ebnWr1/vPYcwUDwej06dOqVHH31Uw4cP1/bt25Wenh7Qmq6qra3VgQMH9MgjjwS6lC7HauTOm42dK+wP1/dTM2bM0E9/+lNJ0ltvvaU333xTiYmJjdbkz1p9+e750uaN1HL9vh2obdIcX7dBU7X66t1331VwcLAmTZok6coga+vWrYqMjNSXX36pDRs2aNOmTX5r73omfhbX/5jT0dsETTNtHNYSk8ZpLTF1HNcS08Z5LTF5HNiSzj5OZIp7O3A4HCorK5N0ZVrZ1QvKdJTa2lpt2rRJkyZN0g9+8AMjarqqR48eGjVqlL744gtdvHhRHo9H0pUjMr179+6QGo4fP67c3FwtWrRImzdv1meffaY33ngjYPVcdbU9h8Oh2NhY5efnB/Rzi4qKUlRUlPfI0Lhx43Tq1Ckj9qWDBw9q8ODB6tWrlyRz9u+uICoqSiUlJd7HJSUl3l+d/amxfqpXr14KCgpSUFCQpk2bppMnTzZa09Xvp79q9eW7FxUVpeLi4gZt9u7du0GNN1LL9ft2oLaJ1PT3ytdt0FhNvvave/fu1YEDB7RkyRJvyLXb7YqMjJQkDRkyRH379lVBQUGz7bWlr/DXZxEZGemXvzcej0effPJJvRkFHb1N0DiTx2EtMWGc1hJTx3EtMW2c1xKTx4Et6ezjRAJ6O4iJiVFWVpYkKSsrS7GxsR3WtmVZ2rZtm/r3768HH3zQiJoqKipUVVUl6cqVQo8cOaL+/fvr7/7u7/Txxx9LujL4iomJ6ZB6HnnkEW3btk1paWlaunSp7rrrLi1ZsiRg9UhXfmm/Ok2rurpahw8f1sCBAwP6ufXq1UtRUVHeKwUfOXJEAwYMCGhNV11/1MiEmrqKoUOHqqCgQIWFhaqtrdX+/fv9/l1oqp+6+sdTkj755BPddtttkq58vvv375fb7VZhYaEKCgo0bNgwv9Tq63cvJiZG2dnZsixLJ06cUHh4uJxOp8aMGaNPP/1UlZWVqqys1Keffuq9krcvrt+3A7FNrvLXNnA6nQoLC9OJEydkWZays7N9qunQoUP605/+pBUrVqhbt27e5RUVFaqrq5MknTt3TgUFBerbt2+z7bWlr/DXZ2Gz2fzy9+bIkSOKjo6uN3W9o7cJGjJxHNYS08ZpLTFxHNcSE8d5LTF5HNiSzj5OtFnMe2qTzZs369ixY7pw4YIcDodmz56t2NhYpaamqri4WC6XS8uWLeuwS/n/7W9/0+rVqzVw4EDvUYY5c+Zo+PDhAavpq6++Ulpamurq6mRZlsaPH6+f/vSnOnfuXIPbYdjt9g6p6aqjR49qz549WrlyZUDrOXfunDZu3CjpylGR++67TzNnztSFCxcC9rlJ0unTp7Vt2zbV1tbqlltu8U7nDGRNly9f1hNPPKFXX33VO20w0Nupq8nLy9OOHTtUV1enqVOnaubMmX59/ab6qX379un06dOy2Wzq06ePFixY4D36++677+p///d/FRQUpHnz5mns2LF+qdXX755lWfrd736nTz/9VKGhoUpMTNTQoUMlXTk/evfu3ZKu3GJs6tSpPtXS2L79yiuvdMg28eVv2Y1sg5MnT2rr1q2qqanRmDFj9OijjzY63buxOnbv3q3a2lrvd/rqrcM+/vhj7dq1S8HBwQoKCtKsWbO8A/Km2mttX9FYHUePHvXbZ+HL35vGarn//vuVlpam4cOHa8aMGd5123OboHVMHIe1xORxWktMGce1xNRxXktMHAe2pCuMEwnoAAAAAAAYgCnuAAAAAAAYgIAOAAAAAIABCOgAAAAAABiAgA4AAAAAgAEI6DBSWVmZKioqvI89Hk+9++76g8fjUW1trV9fEwA6mq/95bW34jp16pSkK/cM5pqxANBQdXW1KisrA10GbiIEdBjpnXfe8d7LUpLOnj2r5ORk1dTUtOl1t2zZohMnTki6cjuat956q8l16+rqVFNT4/3v6oAWAEziS39ZXl6utWvX6syZM5KkV199VbW1tcrOzlZKSkqTfazH49G6deu0ePHiZvvhTz75RIcPH27jOwIAc7z33nvNjhevVV1dreeee67esoKCAr3wwgvtURq6qJBAFwBcr7a2VgcOHFD//v21bt067/LKykq99NJLCgq68rvS7bffrl69emn37t3e+xzW1NTo0qVLcjgc3ueVlpbqN7/5jW655ZYm25w/f75cLpckqbi4WMuXL5ckbdy4US6XS0VFRVqyZIlefvll9e3b1/u86upqjRo1SosWLfLfBgCAVvKlv0xISFBKSor+4R/+QbfffrskaciQIfroo4901113qa6uTh9//LEiIyO99/G+2kZaWpoiIyM1bNgwvfzyy0pKSlK3bt286/z5z3/Whx9+qOrqahUXF2vAgAGKjIyUx+NRaWmpioqK5HA4FBoa6r2POQCYrqamRh988IHsdruOHDnS5Ho///nPlZ2drYULF+rrr7/WypUrde+992rWrFnKzs5W9+7dlZ+fr2HDhnVg9eisCOgwzqFDhzRy5EhNnTpV48ePb3K9kJAQZWZm6sEHH9RDDz0kSTp69Kj+8z//U88884x3vaefflqSdPDgQX3zzTfKzs7WsWPH9NVXX6msrEwnTpxQRESENmzYIElKS0vzPjcmJkZPPPGEkpKSdMcdd8jpdGrTpk3efz969Kj27t3rz7cPAK3W2v6yuLhYL7zwgi5evKiePXtqxYoVkqTQ0FDt379fU6ZMUWRkpMrKyuR2u73PKywsVFpamvr27atf/OIXCg4O1h/+8Ae98MILWrx4sW677TZJ0vnz5/XDH/5Q58+f14MPPihJWrFihdauXauamhqtW7dOv/zlLxUeHq6wsLB23CIA4D+7du3S9OnT9fDDD3uXJScn66GHHtKdd97ZYF1JGjhwoJKTkyVd+YHzyy+/1JIlS7RlyxatWrXK+8Mp0BQCOoxiWZbeeecdjR07Vt27d9dvfvObJs+l/NWvfuXTa48dO1Yffvihzp07p4sXL6qkpER33HGHRowYocrKSm+QLy4u1pQpU7zP++yzzzR8+HD16NFDZWVl3vWkK0fQr++gAaAj+NJfTp06VUlJSdq5c6f69++vf/mXf/H+27Zt2xQSEqKHHnpI3333nf7whz9o0qRJev/997Vnzx7NmjVLM2bM8K4/Z84c3X777XrxxRc1adIkPfjgg5o9e7Zee+015eXl6a9//aukK0eUXnvtNZ0+fVqhoaHavHmzysvLNWfOHE2ePLl9Nw4AtNHhw4eVl5dXr7/01dtvv62xY8fKZrNp1KhReueddzRr1iw/VomuiIAOo+zbt0/ffPONd3rl1aM8zfmv//ovffjhh5Kky5cvq6qqSkuXLvX+e1FRUb31p02bpkGDBikvL09lZWWS1OQRdEnav3+/vv/970uSnE6ndz2JI+gAAudG+svbb79ddru93rIFCxZo165devrpp2W32/WjH/1Ib7zxhi5duqSpU6dqz5492rNnj/daHN27d5ckTZw4UW63W7t27dIPfvADFRUV6dlnn1X37t3161//2juNfsmSJTp//rxuueUW5ebm+nkrAED76NatmxYuXKiNGzfW+/GzqKhIr776ar3TfAYNGiSPx6Ply5fL7Xbr6aefVl1dncLCwjR37lz9/ve/V2Jiop5/YcZHKgAABwBJREFU/nn16NFDDzzwQCDeEjoJAjqMkpmZqZ/85CfeqwknJyc3CNhXvfTSS/J4PPrxj3+shIQESc1Pcb+qd+/e6tevnxwOhzegN3f14tjYWP3lL3/R97//fY6gAzCGr/1lWFiYzpw5o7Vr1za6Tm1trWbPnq0JEybo/vvvl81mkyQ98sgjkqT3339f58+frzfV86rc3FzNmzdPr732mr7++ms99NBDioiI8P774cOHNXr06Da9XwDoSHfccYck6bvvvlNKSop69OghqfEp7hcvXpTH49Fnn32mkpISxcfHKycnR4MGDdJtt92m3bt36+LFi1q+fLk+++yzgLwfdB4EdBglMTFRx44d09mzZyVJq1atajI8BwcHq6amxtthtta//uu/qlu3bqqqqtK4ceMkXblCcUlJiaQrR+Gvde+992rHjh06f/68nE6nUlJS9Nxzz+mll15Sfn6+MjMzVVNTo9DQUF/fLgDcMF/7S+nKQPPqLKHi4mIVFBR4g3NaWpr3Aps2m03//u//7p2uLl0ZgNbV1Wnfvn3eZXfffbf+6Z/+SREREUpPT1dkZKRWrFihjIwMbdiwwXuEqba2tsGRewDoKnJzc3XhwgXZbDaVlJToxIkTOnr0qN577z3vOuvWrVNtbS1XdEeLCOgwytUrqV/1+9//XsePH2+wXlhYmH71q1+ppKREmZmZysjIkNS6Ke5PPPGERowYoX379un06dO6ePGi3G633n77bUnSV1991aC9YcOG6fTp05KuDHTvvPNOHT58WFFRUfr888+Vk5OjiRMntum9A4AvfO0vr/f111/r0KFDTR7Z/tnPfqa6ujrNmjVLYWFh9Y6gV1dXa8eOHXr00UclXQn73377rWw2m3bu3ClJWrRokf74xz9KunJ7t8jIyDa9XwAwXW5urmpqanTrrbcqMjKy3mmRH330kfbu3Sun0xnACtEZENBhtHPnzmnx4sUaOHBgveULFy6UJJ0+fVpPPfWURo0aJan5Ke7btm3TmTNnlJaWVu9od0VFhe68807va157Dnptba0uXbqkoqIi7xEoSZo5c6b++Z//WZcvX9b8+fN1zz33+PmdA4BvWuovr3fy5EnV1NTI7XY3enT76hT3zZs3Nzi//be//a369Onj7Rfvu+8+ffDBB95bvaWlpcmyLO809xMnTig4OFhhYWHec9gBwGSvvvqq8vPzFRwcXO/e5iUlJdqyZUu9sWRBQYGGDBmikSNHavz48dq2bZu+973vKTc3V7169VJ4eLj++Mc/6sUXX/T2rUBTCOjotE6fPq1z5841e09Jy7JUXV2toKAgLViwQG+++aaqqqr02GOPadOmTZo2bZoOHjxYL2C73W7ZbDZZlqXz58/rmWee0eDBgzVy5EjvOqdOndLMmTP13//9394LIQGA6Z566ilduHBB//M//6N9+/bpnnvu0S9/+UvdddddGjdunIYPH15v/Z/97Gfavn27Ll686F1WUVGh7t27N3ou+vXmz5+vHTt2KDo6Wi+//LIefvhh70U3AcBkTz75ZKPLGzsHPTs7W8XFxfrJT36ikJAQzZ07V8eOHVOvXr3061//Wna7XUuXLmUmEVqFgA7jvfzyyw2O7tTU1Gjv3r368Y9/XO8XzKCgIIWGhurs2bN65plnZFmWoqOj5XQ6veH8F7/4hUJCQvT0008rNzdXn3/+uR577DH9+c9/1p49eyRJt912m77++mu5XC6tWbNG0pXzLysrK7Vq1SpFR0dr8eLFqq2t1cqVK5WQkKAf/ehHHbdRAKARTfWXtbW1+rd/+zedPn1a1dXVmjhxopKTk9WjRw/NnTtXOTk5eu+997Rr1y4999xzOnr0qP7jP/7D+xqffvppg3PQn3rqKUnS3//93+uBBx5QXV2d9yjT2bNnde+992r79u1yuVxauXKlLl++rNdff11ffvllq8I9AHQW4eHh2r9/v/76178qKChIly9f1r333qthw4bp+eef17p165SRkaHBgwcrJIT4heaxh8B4y5Yta3TK5pw5cxp0ciNHjvQe6X7zzTdVV1enoKAgSdI//uM/KiwszLtuaGioJkyYoFGjRik0NFQzZszQ9OnTm5x6VF1dreHDh+uRRx7RoEGDJEkTJkzQ4MGDdenSJX+9XQC4YU31lyEhIZoxY4YcDkeDc9ftdrsmTJigCRMmqLCwUD179tT48eM1fvx4n9petWpVvSu3FxcXq1+/ft7+8uoRpMLCwht7cwBgqJiYGMXExHgfHz58WEeOHJEkDRw4UKtXr9a2bdsCVR46GZvV3P2lAAAAAABtcu1BI6A5BHQAAAAAAAzAzzgAAAAAABiAgA4AAAAAgAEI6AAAAAAAGICADgAAAACAAQjoAAAAAAAY4P8BMBXgrUhT/xUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1008x576 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['axes.unicode_minus']=False\n",
    "plt.style.use('ggplot')\n",
    "# plt.style.use('seaborn-whitegrid')\n",
    "fig=plt.figure(figsize=(14,8)) #调整图形大小\n",
    "plt.subplot2grid((1,3),(0,0))\n",
    "NewData['信用期限(月)'].plot(kind='hist',edgecolor='black')# 直方图 \n",
    "plt.xlabel('信用期限',fontproperties=font)\n",
    "plt.title(\"信用期限(月)分布情况\",fontproperties=font) # 标题\n",
    "\n",
    "plt.subplot2grid((1,3),(0,1))\n",
    "NewData['信贷金额'].plot(kind=\"hist\",edgecolor='black')\n",
    "plt.xlabel('信贷金额',fontproperties=font)\n",
    "plt.title(\"信贷金额分布情况\",fontproperties=font)\n",
    "\n",
    "plt.subplot2grid((1,3),(0,2))\n",
    "NewData['年龄'].plot(kind=\"hist\",edgecolor='black')\n",
    "plt.xlabel('年龄',fontproperties=font)\n",
    "plt.title(\"年龄分布情况\",fontproperties=font)\n",
    "plt.tight_layout() #防止图形之间重叠\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:10.717826Z",
     "start_time": "2019-04-01T06:33:10.407826Z"
    },
    "hidden": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\kmxie\\AppData\\Roaming\\Python\\Python36\\site-packages\\matplotlib\\cbook\\__init__.py:424: MatplotlibDeprecationWarning: \n",
      "Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.\n",
      "  warn_deprecated(\"2.2\", \"Passing one of 'on', 'true', 'off', 'false' as a \"\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAAGoCAYAAACwmRWfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xt4lOW1sPE7CYckBA0QBRMEBcGNUrGgCIgiELGtW0GgtYJVq1Td3Ru7xYoo0AQ1kg8PX1tUbD0hKlUrfLHW7QmLChtFVNIANQWVgyRAjSZIgCRkMt8fGUYDAcbDZJJw/67L62VW3sms4FzLuOZ51hMXDAaDSJIkSZIkNWLxsU5AkiRJkiTpUGxgSJIkSZKkRs8GhiRJkiRJavRsYEiSJEmSpEbPBoYkSZIkSWr0bGDooLZs2cKnn34aflxdXc2mTZu+09eorq6mqqrqO/2eDSEQCMQ6BUmHua9boz/99FNqamoAWLlyJQDFxcU0xwPJrNGSmqLy8nJKS0tjncY3Yt1VQ7CBoYO67bbbePbZZ8OPP/zwQ8477zx27979rb7vpZdeyttvvw3As88+y29+85sD3ltTU0NFRUX4n72/fB/K5MmTWbBgQfhxIBDg9NNPp6SkZL97A4EA3/ve91i7dm2d+LBhw3jzzTfr/f6DBg3io48+Cj++8cYbuf/++3nqqae4+eab2bNnT0R5StI39XVq9L/+9S+GDRvG6tWrAfjZz35GVVUVjz/+OOeff/4B63p1dTWZmZl07979oLU/Ly+PRYsWRZy7NVqS9nfXXXcxffr0iO4tLy9nwIABdWLr1q1j8ODB9d5v3VVz0CLWCajx2rNnD3/961/p1asXmZmZ4fjnn3/Oj370IxISEgDo06cPxxxzDDk5ORx55JEAVFRU8MUXX3D00UeHn1dcXMzatWs57rjjDvia7dq1o2vXrgBs2rSJhQsXAjB69Gi6dOnChg0bmD9/PmPHjqVbt27h5+3cuZMhQ4Ywd+7ccO5PPvkkv/71r8P3vPHGGwQCAVJSUqioqACgZcuWJCQk8Nhjj7Fp0yZ+9rOfERcXB8CkSZNYunQpkydPDn+PH/zgB2RnZ/PKK6/QsWNHunfvHv5amzZtqKys5OKLL2bdunU88sgjXHPNNbz++uuMHDmSY445Jvx306pVK+Lj6/YPN23axD/+8Y+D/v1I0l5fp0bffPPNnH/++dx8882ccsopAJx22mn8+c9/ZtiwYQQCAZ599lnS0tL44Q9/GP5eVVVVXHHFFRx11FGcccYZ/PjHP+aZZ54hOTk5fM8DDzzAE088wY4dO/jkk0846aST6NChA3v27KG4uJgNGzZw9NFHk5yczIABA3jggQes0ZJUj927d3PffffRunXrgzaE77nnHubNm8dDDz3E6tWrOe2007jgggvIysri8ccfJyUlhXfeeYf+/fuHn2PdVXNhA0MH9OKLL3L22Wfz85//nB//+McHvK9Vq1Y88sgj3HDDDUybNg2A119/nd/+9rfk5eWF7zv11FPD33fNmjU8/vjjvP766xQUFFBcXMzbb79Nhw4dyM/PB+CKK64IP/fCCy/kkUceoVevXgwaNIj09PTwp4h7X29v8yIvL49LL72UtLQ0+vfvz9atW3n77bd58sknKS0tDeexbds27rrrLgYOHMiTTz7J1q1bufDCC5k/fz4dOnTg7LPPZtGiRTz66KPceOONnHTSSQAEg0FmzJjBAw88wPPPP88ZZ5xBUlISFRUVbNiwgblz51JTU8OKFSvo1KkTRx55JBdddBFz587l008/5ZxzzgGgbdu24fyffvppLr/88m/4b0rS4SjSGr1p0ybOPPNMysrKOOqoo+jbty9xcXEkJSXx1FNP8fOf/5y0tDS2bNlCZWVl+HkbNmzgsssuo3v37jz44IO0aNGCqVOncuaZZ/LEE09w8sknA7XbWH75y1+ydetWJk2aBEC/fv144403qKioYPjw4SxYsIDU1FTatm1rjZakA8jKyuKaa67h9ttvD8d+8IMfMG3atP1WVexdvdy7d+/wquaqqireffddnnzyScaNG8eLL75IfHy8dVfNig0M1SsYDHLbbbdx/vnnk5KSwrhx4w64r3rJkiVf63v/8Ic/5Mknn+Sjjz5i+/btfPLJJ5x55pkMGDCAzz77LFxEN23aVKeJ8be//Y0BAwaQmppKcXFx+D6oXUL31cI+duzYcEPjnHPOYfPmzbz66qusW7eO1q1bA/CLX/yC1q1bM3fuXObOncuyZcu48soref311xk2bBgjRozg7LPPJiEhgXvvvZf7778fgHnz5vG9732Po48+mgsvvJAf/ehHLF26lEAgQFJSEj169KBbt26cc8459O7dm1WrVgGwYsUKcnNz6dmzJ3/6059o1aoVN910E59++inHHnvs1/o7lHR4+zo1+uc//znPPPMMN9xwA7169eL9998Pf23ChAm0atWKadOm8c9//pNbbrmFSy+9lNmzZ3P33XeTnZ3NtddeG74/JyeHPn36MGTIEC699FImTZrEjBkzuPbaa/nrX/8aXjV39913c+2117Jy5UqSkpL46U9/yrZt25g5cyYpKSnWaEnax6uvvsoLL7xQp0Z/XTNmzOBHP/oR8fHxnHPOOdx2221kZWUB/m6s5sMGhur11FNP8cEHH3D++ecD8Je//OWQz/nd737HE088AcCuXbsoLS3l3/7t38Jf37BhQ537J0yYwKmnnsoLL7zAli1bAA64AmNvThdddBEA6enp4fug7gqM+rz00ktcd9114SVwULuvu1WrVsyaNQuASy65hL/+9a+kpqaSmZlJcXFx+JdxgNatW1NZWcnixYtZvnw5xx9/PHPmzAl3h5999ln+9re/MXXqVAC2b99OWVlZ+PmrVq1i3rx5/P3vf+fss8+mZcuW/OAHP2DWrFl18pKkQ/kmNbpPnz7hX1L3+sMf/kB2dnb4axMnTuS///u/+eKLL7jyyiu56667uOuuu9i1axc1NTWkpKQAtfWysrKS7OxsRo8ezYYNG3jxxRdJSUlh5MiR4W0qez/B69at20FztEZLOty1adOGhx9+mIsuuqhOQ3rjxo1cdtlldbbuff/736e6uppTTjmFiooKTj31VKqrqzniiCO48847mThxIo8++igDBw4kNTU1vD37q6y7aqpsYKheDz30EDfeeGN4Mv15553Hxo0b6713xYoV7NmzhxtuuIEpU6YAB99Cslfnzp054YQT6NixY7iBcbABnaNGjeLBBx9k1KhRh1yBsa8JEyZQWFjI+PHjeeaZZ4iLi6OqqorWrVvzwAMP8NJLL7F8+XLGjx/PeeedB8D//M//1Nlzd8IJJwAwd+5cXnvtNe666y4uv/xy3n77bfLz81myZAmvv/46K1euZM+ePbRr147MzEzOOOMMqqurOfbYY8nJyeG1116jb9++HHnkkfz5z39m+fLlnHnmmQfMXZL29XVrdNu2bVm9ejVDhw6t956qqipuvfVWfvKTn3DVVVeFf3G84447ALj33nvZunVrnWXNez3//PP89re/5eqrr2b16tVMmzaN9u3bh7++aNEihg8fftCfxxot6XA3aNAgANauXcu7775LamoqUP8Wku3bt1NdXc3f/vY3PvnkE6655hry8vI49dRTOfnkk8nJyWH79u0sXLiQxYsX1/t61l01VTYwVK9HH32UN998kw8//BCoLVgHOmavRYsW7N69O1xoI/Xzn/+cNm3aUFpaGt6/XV1dzebNm4HaVRxf9e///u9cf/31bNu2jfT0dN59910GDBjAihUreOedd3j44YfDE/L/3//7f+H9gHu72BdffDGPPfYYt99+O9OnTw8X6WuvvZYePXrw3HPPMWvWLE4++WT+8pe/cNFFF9X5tHJvXhs2bOCXv/wlDz74IC+88AJFRUXExcVx8cUX89Zbb7FkyRJKSkqYNm0av/71r1myZAnx8fG88cYbnHXWWQSDQVq0aMFJJ53EJZdcQkJCAsXFxbz88stf6+9P0uHr69ZogH/+85/hlXCbNm1i3bp14cbCFVdcER66HBcXx0033VRnUv327dsJBAI89dRT4di5557LnDlzaN++Pbm5uRx11FH85S9/4cEHH+Siiy6iTZs2AFRWVpKYmFgnJ2u0JH1zzz//PCUlJcTHx7N582beeustXn/9de68887wPZmZmVRWVvLaa6/xzjvvWHfVbNjAUL26dOlS5/F1113H//7v/+53X9u2bVmyZAmbN2/m4Ycf5o9//CMQ2RaSRx99lAEDBvDUU0+Rn5/P9u3bqaioIDs7G6DOFpG9+vfvH463aNGCwYMH8+qrr3Lsscfy5ptv8txzz5GYmBgeDASEBwPFxcXxxBNPcMUVV7B79252795NUlISwWCQO++8kxNOOIHrrruOsWPHArW/YNfXZX7uuedo06YNDzzwAD169GDKlCkkJSUBMH36dF577TVuvPFGsrOzw6cAxMfHc/vtt1NeXk7Xrl3Jz89n1apVvPXWW/z+97/ne9/7HjNnzjzUvxZJAr5+jd7X6tWrefHFFw+4MiI3N5fq6mqys7Np27ZtnRUY5eXlTJo0idmzZwO1vwh/8MEHxMXFhafbz5s3j1tvvRWoPb61Q4cOdb6/NVqSvr3nnnuO3bt307NnzzrbsAH+/Oc/M3fu3PBJH9ZdNRc2MBSRjz76iCeeeILevXvXiXfu3BmAlStXMn/+fIYMGQIcfAvJhAkTWL169X77+T799FMGDx7MQw89BNSdgVFVVcWOHTvYuHFj+NNEgKlTp/LDH/6QnTt38vvf/54RI0bUec19dejQgeeffx6o3XaSnJzMPffcw/e+9z3Ky8v505/+FB4sdKAu869+9St+9atfsXv3blauXElRUREnnHAClZWVHH/88fzsZz/jr3/9K8cffzwjRozglltuCf8MQ4cOpbS0lOOOO45evXpx0kkn8d5779GvX79I/jVIUr0OVaP3tWLFCioqKqisrNxvLgbU/lIbFxfHT3/60/1mV1x99dV07do1XIsvueQS7rvvPpYuXQrU1u6amhrat29PXFwcy5Yto0WLFrRt2za8KuNArNGSDleXXXYZ77zzDi1atGDAgAHh+ObNmxk/fny4IQCwbt06+vXrx1lnncVPfvITJkyYwPnnn8/zzz9Px44dOfLII5kxYwZvvPHGIWdJWHfV1MQf+hbp4P7+97/z8ccfc8YZZxzwnmAwSHl5OfHx8fzxj3/knHPOYdCgQfzv//4vnTp1Ch+/unePHdQuO957HvSWLVs49dRTSU9P56yzzgrfs3LlSqZNm0anTp3o06dPOP7ss89y3HHHcdxxx4WXy1VXV1NaWgrAjh07KCws5Oijj2bz5s3MmDEDqD0Sdu8nknuX2u39Z+//CPzud7/jtNNOY+DAgTz66KNs2bKF3/72t5xyyimceOKJpKWlsWfPHlatWkVaWlo4p1atWrFixQrWrl0b/jv45JNPeO+99775X74kReipp57is88+44477uBPf/oTycnJ9O7dm2uuuYaxY8fuV8Nzc3Pp2rUrX3zxRThWUlJCSkoKOTk5h3y93/3ud8ydO5cTTzyRH//4x3Ts2DE8iNkaLUl1zZs3j8LCwv3+GTx4ME8++WSd2GOPPcbIkSPJzc3ljDPOCA/d7NixIyNHjuS8887j4YcfrrP6zbqr5sIVGIrY2LFj99vHvHv3bubOncsNN9xQ52sJCQkkJSXx0UcfceqppxIMBunZsyfp6enccMMNlJWV8cc//pFWrVqRl5fHc889x5tvvsl9993HnDlzuPvuuwkGg9x7772sWrWKrl27hocQffHFF3z22Wf079+fE088kccff5zKykr69evHlClT6Ny5835HRUFtlzctLS286mPkyJF07dqV//t//2+9P++FF15Iq1atwo/3dpn//d//ncsuu4x27dpRVlbG8OHDueCCC3jjjTfo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\n",
      "text/plain": [
       "<Figure size 1080x432 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.style.use('ggplot')\n",
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "plt.figure(figsize=(15,6)) \n",
    "plt.subplot(131)\n",
    "plt.boxplot(x=NewData['信用期限(月)'],patch_artist=True,showmeans=True,boxprops={'color':'black','facecolor':'#9999ff'},\n",
    "           flierprops={'marker':'o','markerfacecolor':'red','color':'black'},meanprops={'marker':'D','markerfacecolor':'indianred'},\n",
    "           medianprops={'linestyle':'--','color':'orange'},vert=True,labels=['信用期限'])\n",
    "plt.title('信用期限的箱线图',fontproperties=font)\n",
    "# plt.xlabel('箱线图',fontproperties=font)\n",
    "plt.tick_params(top='off',right='off')\n",
    "\n",
    "plt.subplot(132)\n",
    "plt.boxplot(x=NewData['信贷金额'],patch_artist=True,showmeans=True,boxprops={'color':'black','facecolor':'#9999ff'},\n",
    "           flierprops={'marker':'o','markerfacecolor':'red','color':'black'},meanprops={'marker':'D','markerfacecolor':'indianred'},\n",
    "           medianprops={'linestyle':'--','color':'orange'},vert=True,labels=['信贷金额'])\n",
    "plt.title('信贷金额的箱线图',fontproperties=font)\n",
    "# plt.xlabel('箱线图',fontproperties=font)\n",
    "plt.tick_params(top='off',right='off')\n",
    "\n",
    "plt.subplot(133)\n",
    "plt.boxplot(x=NewData['年龄'],patch_artist=True,showmeans=True,boxprops={'color':'black','facecolor':'#9999ff'},\n",
    "           flierprops={'marker':'o','markerfacecolor':'red','color':'black'},meanprops={'marker':'D','markerfacecolor':'indianred'},\n",
    "           medianprops={'linestyle':'--','color':'orange'},vert=True,labels=['年龄'])\n",
    "plt.title('年龄的箱线图',fontproperties=font)\n",
    "# plt.xlabel('箱线图',fontproperties=font)\n",
    "plt.tick_params(top='off',right='off')\n",
    "plt.tight_layout() #防止图形之间重叠\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:10.728826Z",
     "start_time": "2019-04-01T06:33:10.720826Z"
    },
    "hidden": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 21 columns):\n",
      "target      1000 non-null object\n",
      "账户状态        1000 non-null object\n",
      "信用历史付款状况    1000 non-null object\n",
      "资金用途        1000 non-null object\n",
      "储蓄情况        1000 non-null object\n",
      "工作年限        1000 non-null object\n",
      "分期利率        1000 non-null object\n",
      "婚姻状况        1000 non-null object\n",
      "担保机构(类型)    1000 non-null object\n",
      "现地址居住时间     1000 non-null object\n",
      "财产状况        1000 non-null object\n",
      "共同账户(类型)    1000 non-null object\n",
      "住房类型        1000 non-null object\n",
      "信用卡数量       1000 non-null object\n",
      "工作(类型)      1000 non-null object\n",
      "担保人数量       1000 non-null object\n",
      "是否有电话       1000 non-null object\n",
      "是否外籍工作者     1000 non-null object\n",
      "信用期限(月)     1000 non-null int64\n",
      "信贷金额        1000 non-null int64\n",
      "年龄          1000 non-null int64\n",
      "dtypes: int64(3), object(18)\n",
      "memory usage: 164.1+ KB\n"
     ]
    }
   ],
   "source": [
    "NewData.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据分箱与变量选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- **利用woe包自动对连续变量分箱，对离散变量计算woe值**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:12.631826Z",
     "start_time": "2019-04-01T06:33:10.732826Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "---------------process discrete variable:账户状态---------------\n",
      "-------------process discrete variable:信用历史付款状况-------------\n",
      "---------------process discrete variable:资金用途---------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\woe\\feature_process.py:414: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  df[var] = cpvar\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "---------------process discrete variable:储蓄情况---------------\n",
      "---------------process discrete variable:工作年限---------------\n",
      "---------------process discrete variable:分期利率---------------\n",
      "---------------process discrete variable:婚姻状况---------------\n",
      "-------------process discrete variable:担保机构(类型)-------------\n",
      "-------------process discrete variable:现地址居住时间--------------\n",
      "---------------process discrete variable:财产状况---------------\n",
      "-------------process discrete variable:共同账户(类型)-------------\n",
      "---------------process discrete variable:住房类型---------------\n",
      "--------------process discrete variable:信用卡数量---------------\n",
      "--------------process discrete variable:工作(类型)--------------\n",
      "--------------process discrete variable:担保人数量---------------\n",
      "--------------process discrete variable:是否有电话---------------\n",
      "-------------process discrete variable:是否外籍工作者--------------\n",
      "------------process continuous variable:信用期限(月)-------------\n",
      "--------------process continuous variable:信贷金额--------------\n",
      "---------------process continuous variable:年龄---------------\n"
     ]
    }
   ],
   "source": [
    "import woe.feature_process as fp\n",
    "import woe.eval as eval\n",
    "#%% woe分箱, iv and transform\n",
    "data_woe = NewData #用于存储所有数据的woe值\n",
    "civ_list = []\n",
    "n_positive = len(NewData['target'][NewData['target']==0])\n",
    "n_negtive = len(NewData) - n_positive\n",
    "for column in list(NewData.columns[1:]):\n",
    "    if NewData[column].dtypes == 'object':\n",
    "        civ = fp.proc_woe_discrete(NewData, column, n_positive, n_negtive, min_sample=0.05*len(NewData), alpha=0.05)\n",
    "    else:            \n",
    "        civ = fp.proc_woe_continuous(NewData, column, n_positive, n_negtive, min_sample=0.05*len(NewData), alpha=0.05)\n",
    "    civ_list.append(civ)\n",
    "    data_woe[column] = fp.woe_trans(NewData[column], civ)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:12.706826Z",
     "start_time": "2019-04-01T06:33:12.634826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>target</th>\n",
       "      <th>账户状态</th>\n",
       "      <th>信用历史付款状况</th>\n",
       "      <th>资金用途</th>\n",
       "      <th>储蓄情况</th>\n",
       "      <th>工作年限</th>\n",
       "      <th>分期利率</th>\n",
       "      <th>婚姻状况</th>\n",
       "      <th>担保机构(类型)</th>\n",
       "      <th>现地址居住时间</th>\n",
       "      <th>...</th>\n",
       "      <th>共同账户(类型)</th>\n",
       "      <th>住房类型</th>\n",
       "      <th>信用卡数量</th>\n",
       "      <th>工作(类型)</th>\n",
       "      <th>担保人数量</th>\n",
       "      <th>是否有电话</th>\n",
       "      <th>是否外籍工作者</th>\n",
       "      <th>信用期限(月)</th>\n",
       "      <th>信贷金额</th>\n",
       "      <th>年龄</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.555042</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.759133</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>2.400639</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.468427</td>\n",
       "      <td>1.555042</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.609436</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.555042</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>2.400639</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>2.400639</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.065021</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>1</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>2.146569</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.065021</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.609436</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>1</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>1</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>2.146569</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>1</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.759133</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.359880</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>1</td>\n",
       "      <td>2.100056</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>2.468427</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>970</th>\n",
       "      <td>0</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.759133</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>971</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>972</th>\n",
       "      <td>0</td>\n",
       "      <td>2.100056</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>973</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>974</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.088459</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>975</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.252761</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>976</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>977</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>2.940523</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>978</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>979</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.468427</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.759133</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>980</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>981</th>\n",
       "      <td>0</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>1.609436</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>982</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.749535</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>983</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>984</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>2.282375</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>0.778305</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>985</th>\n",
       "      <td>0</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.453433</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>986</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.252761</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>2.957489</td>\n",
       "      <td>2.359880</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>987</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.555042</td>\n",
       "      <td>2.089009</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.833112</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>988</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.223775</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>989</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.759133</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>990</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.088459</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>991</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.468427</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>992</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.468427</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>993</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.945908</td>\n",
       "      <td>1.459254</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.210965</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>2.146569</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>994</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.624444</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.810306</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>995</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.662492</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.290150</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.791758</td>\n",
       "      <td>1.710003</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>1.423238</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>0</td>\n",
       "      <td>2.870857</td>\n",
       "      <td>2.428335</td>\n",
       "      <td>1.327883</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.206242</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>998</th>\n",
       "      <td>0</td>\n",
       "      <td>1.293204</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>2.104657</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.375364</td>\n",
       "      <td>1.850061</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.807072</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.490182</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.793233</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.989712</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>999</th>\n",
       "      <td>0</td>\n",
       "      <td>0.876497</td>\n",
       "      <td>1.428557</td>\n",
       "      <td>1.595360</td>\n",
       "      <td>2.398839</td>\n",
       "      <td>1.930161</td>\n",
       "      <td>1.537295</td>\n",
       "      <td>1.860143</td>\n",
       "      <td>1.666622</td>\n",
       "      <td>1.693443</td>\n",
       "      <td>...</td>\n",
       "      <td>1.780725</td>\n",
       "      <td>1.890647</td>\n",
       "      <td>1.618963</td>\n",
       "      <td>1.713658</td>\n",
       "      <td>1.691779</td>\n",
       "      <td>1.629904</td>\n",
       "      <td>1.659728</td>\n",
       "      <td>1.585907</td>\n",
       "      <td>1.694596</td>\n",
       "      <td>1.694596</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    target      账户状态  信用历史付款状况      资金用途      储蓄情况      工作年限      分期利率  \\\n",
       "0        1  0.876497  2.428335  1.595360  1.423238  1.223775  1.537295   \n",
       "1        1  0.876497  2.428335  1.327883  1.423238  1.662492  1.850061   \n",
       "2        1  1.293204  1.428557  1.453433  1.555042  2.089009  1.850061   \n",
       "3        1  0.876497  2.428335  1.327883  1.423238  1.662492  1.759133   \n",
       "4        1  0.876497  2.428335  1.327883  1.423238  1.662492  1.537295   \n",
       "5        1  0.876497  2.428335  1.327883  1.423238  1.223775  1.945908   \n",
       "6        1  0.876497  2.428335  1.327883  1.423238  2.089009  1.945908   \n",
       "7        1  0.876497  2.428335  1.327883  1.423238  1.223775  1.850061   \n",
       "8        1  2.870857  2.428335  2.104657  1.423238  1.375364  1.537295   \n",
       "9        1  1.293204  1.428557  2.104657  2.400639  1.375364  1.945908   \n",
       "10       1  0.876497  2.428335  1.327883  1.423238  1.662492  1.850061   \n",
       "11       1  0.876497  2.428335  2.468427  1.555042  2.089009  1.945908   \n",
       "12       1  0.876497  2.428335  2.104657  1.423238  2.089009  1.945908   \n",
       "13       1  1.293204  1.609436  1.327883  1.555042  1.375364  1.850061   \n",
       "14       1  0.876497  1.428557  2.104657  2.398839  2.089009  1.850061   \n",
       "15       1  0.876497  1.428557  2.104657  2.400639  1.662492  1.850061   \n",
       "16       1  0.876497  2.428335  1.327883  1.423238  1.662492  1.945908   \n",
       "17       1  1.293204  1.428557  2.104657  2.400639  1.223775  1.945908   \n",
       "18       1  1.293204  2.428335  2.104657  1.423238  1.930161  1.537295   \n",
       "19       1  2.870857  2.428335  1.327883  1.423238  1.662492  1.945908   \n",
       "20       1  0.876497  2.428335  1.327883  1.423238  1.662492  1.945908   \n",
       "21       1  1.293204  2.428335  1.327883  1.423238  1.223775  1.945908   \n",
       "22       0  1.293204  1.428557  1.453433  1.423238  1.223775  1.537295   \n",
       "23       1  1.293204  2.428335  1.595360  1.423238  2.089009  1.537295   \n",
       "24       1  0.876497  2.428335  1.327883  2.398839  1.223775  1.945908   \n",
       "25       1  1.293204  1.609436  2.104657  1.423238  2.089009  1.850061   \n",
       "26       1  0.876497  1.428557  1.595360  1.423238  1.930161  1.537295   \n",
       "27       1  1.293204  2.428335  2.104657  1.423238  1.930161  1.850061   \n",
       "28       1  2.870857  1.428557  1.327883  2.398839  1.662492  1.759133   \n",
       "29       1  2.100056  2.428335  2.468427  1.423238  1.930161  1.537295   \n",
       "..     ...       ...       ...       ...       ...       ...       ...   \n",
       "970      0  2.870857  1.428557  1.453433  1.423238  1.375364  1.759133   \n",
       "971      0  1.293204  1.428557  1.453433  1.423238  1.930161  1.850061   \n",
       "972      0  2.100056  1.428557  2.104657  1.423238  1.662492  1.537295   \n",
       "973      0  0.876497  1.428557  1.453433  1.423238  1.930161  1.850061   \n",
       "974      0  0.876497  1.428557  1.088459  1.423238  1.223775  1.537295   \n",
       "975      0  0.876497  1.428557  1.453433  1.423238  1.223775  1.945908   \n",
       "976      0  1.293204  1.428557  1.327883  1.423238  1.662492  1.945908   \n",
       "977      0  0.876497  1.428557  1.327883  1.423238  1.930161  1.945908   \n",
       "978      0  1.293204  1.428557  1.595360  2.398839  1.930161  1.945908   \n",
       "979      0  0.876497  1.428557  2.468427  1.423238  1.930161  1.759133   \n",
       "980      0  1.293204  1.428557  2.104657  1.423238  1.223775  1.945908   \n",
       "981      0  2.870857  1.609436  1.453433  1.423238  1.662492  1.537295   \n",
       "982      0  1.293204  2.428335  1.595360  1.423238  1.662492  1.850061   \n",
       "983      0  0.876497  1.428557  2.104657  1.423238  1.662492  1.537295   \n",
       "984      0  0.876497  1.428557  2.104657  1.423238  2.089009  1.945908   \n",
       "985      0  2.870857  2.428335  1.453433  1.423238  1.375364  1.537295   \n",
       "986      0  0.876497  1.428557  1.327883  1.423238  1.930161  1.945908   \n",
       "987      0  0.876497  1.428557  2.104657  1.555042  2.089009  1.537295   \n",
       "988      0  0.876497  1.428557  1.327883  1.423238  1.223775  1.945908   \n",
       "989      0  1.293204  1.428557  1.327883  1.423238  1.662492  1.759133   \n",
       "990      0  0.876497  1.428557  1.088459  1.423238  1.375364  1.537295   \n",
       "991      0  1.293204  1.428557  2.468427  1.423238  1.930161  1.537295   \n",
       "992      0  0.876497  1.428557  2.468427  2.398839  1.930161  1.945908   \n",
       "993      0  0.876497  2.428335  1.327883  1.423238  1.930161  1.945908   \n",
       "994      0  0.876497  1.428557  2.104657  1.423238  1.662492  1.537295   \n",
       "995      0  0.876497  1.428557  2.104657  1.423238  1.662492  1.850061   \n",
       "996      0  0.876497  1.428557  1.327883  1.423238  1.930161  1.537295   \n",
       "997      0  2.870857  2.428335  1.327883  2.398839  1.930161  1.537295   \n",
       "998      0  1.293204  1.428557  2.104657  2.398839  1.375364  1.850061   \n",
       "999      0  0.876497  1.428557  1.595360  2.398839  1.930161  1.537295   \n",
       "\n",
       "         婚姻状况  担保机构(类型)   现地址居住时间    ...     共同账户(类型)      住房类型     信用卡数量  \\\n",
       "0    1.459254  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "1    1.860143  1.666622  1.624444    ...     1.780725  1.290150  1.810306   \n",
       "2    1.459254  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "3    1.860143  1.666622  1.624444    ...     1.780725  1.290150  1.810306   \n",
       "4    1.860143  1.666622  1.693443    ...     1.210965  1.890647  1.810306   \n",
       "5    1.860143  1.666622  1.749535    ...     1.780725  1.290150  1.810306   \n",
       "6    1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.810306   \n",
       "7    1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "8    1.459254  1.666622  1.693443    ...     1.780725  1.890647  1.810306   \n",
       "9    1.459254  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "10   1.860143  1.666622  1.624444    ...     1.780725  1.290150  1.810306   \n",
       "11   1.833112  1.666622  1.693443    ...     1.780725  1.290150  1.810306   \n",
       "12   1.459254  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "13   1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "14   1.833112  1.666622  1.693443    ...     1.780725  1.290150  1.810306   \n",
       "15   1.860143  1.666622  1.749535    ...     1.780725  1.290150  1.618963   \n",
       "16   1.860143  1.666622  1.624444    ...     1.780725  1.890647  1.810306   \n",
       "17   1.833112  1.666622  1.749535    ...     1.780725  1.290150  1.618963   \n",
       "18   1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "19   1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.810306   \n",
       "20   1.860143  1.666622  1.749535    ...     1.780725  1.290150  2.146569   \n",
       "21   1.860143  1.666622  1.749535    ...     1.210965  1.890647  1.810306   \n",
       "22   1.860143  1.666622  1.807072    ...     1.780725  1.290150  1.618963   \n",
       "23   1.860143  1.666622  1.749535    ...     1.780725  1.890647  1.618963   \n",
       "24   1.860143  1.666622  1.749535    ...     1.780725  1.890647  1.810306   \n",
       "25   1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "26   1.459254  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "27   1.860143  1.666622  1.693443    ...     1.780725  1.890647  2.146569   \n",
       "28   1.860143  1.666622  1.624444    ...     1.780725  1.890647  1.618963   \n",
       "29   1.860143  1.666622  1.693443    ...     1.780725  1.206242  1.618963   \n",
       "..        ...       ...       ...    ...          ...       ...       ...   \n",
       "970  1.860143  1.666622  1.624444    ...     1.780725  1.290150  1.618963   \n",
       "971  1.459254  1.666622  1.693443    ...     1.780725  1.206242  1.810306   \n",
       "972  1.860143  1.666622  1.624444    ...     1.780725  1.890647  1.618963   \n",
       "973  1.860143  1.666622  1.693443    ...     1.780725  1.290150  1.810306   \n",
       "974  1.459254  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "975  1.252761  1.666622  1.807072    ...     1.210965  1.890647  1.618963   \n",
       "976  1.459254  1.666622  1.624444    ...     1.210965  1.890647  1.618963   \n",
       "977  1.860143  1.666622  1.693443    ...     1.210965  1.890647  1.618963   \n",
       "978  1.459254  1.666622  1.624444    ...     1.780725  1.890647  1.618963   \n",
       "979  1.860143  1.666622  1.693443    ...     1.780725  1.206242  1.618963   \n",
       "980  1.833112  1.666622  1.807072    ...     1.780725  1.890647  1.618963   \n",
       "981  1.833112  1.666622  1.624444    ...     1.780725  1.890647  1.618963   \n",
       "982  1.459254  1.666622  1.749535    ...     1.780725  1.890647  1.618963   \n",
       "983  1.459254  1.666622  1.693443    ...     1.210965  1.290150  1.810306   \n",
       "984  1.833112  2.282375  1.807072    ...     1.780725  1.890647  1.810306   \n",
       "985  1.860143  1.666622  1.624444    ...     1.780725  1.890647  1.810306   \n",
       "986  1.252761  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "987  1.833112  1.666622  1.807072    ...     1.780725  1.890647  1.618963   \n",
       "988  1.459254  1.666622  1.624444    ...     1.780725  1.890647  1.618963   \n",
       "989  1.459254  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "990  1.459254  1.666622  1.807072    ...     1.780725  1.890647  1.618963   \n",
       "991  1.459254  1.666622  1.624444    ...     1.780725  1.206242  1.618963   \n",
       "992  1.860143  1.666622  1.693443    ...     1.780725  1.206242  1.618963   \n",
       "993  1.459254  1.666622  1.693443    ...     1.210965  1.290150  2.146569   \n",
       "994  1.860143  1.666622  1.624444    ...     1.780725  1.290150  1.810306   \n",
       "995  1.860143  1.666622  1.693443    ...     1.780725  1.290150  1.618963   \n",
       "996  1.860143  1.666622  1.807072    ...     1.780725  1.890647  1.618963   \n",
       "997  1.860143  1.666622  1.693443    ...     1.780725  1.206242  1.618963   \n",
       "998  1.860143  1.666622  1.807072    ...     1.780725  1.890647  1.618963   \n",
       "999  1.860143  1.666622  1.693443    ...     1.780725  1.890647  1.618963   \n",
       "\n",
       "       工作(类型)     担保人数量     是否有电话   是否外籍工作者   信用期限(月)      信贷金额        年龄  \n",
       "0    1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "1    1.713658  1.710003  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "2    1.791758  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "3    1.791758  1.710003  1.629904  2.957489  1.989712  1.694596  1.694596  \n",
       "4    1.791758  1.691779  1.629904  2.957489  1.989712  1.694596  1.694596  \n",
       "5    1.791758  1.710003  1.629904  2.957489  1.989712  1.694596  1.694596  \n",
       "6    1.791758  1.691779  1.629904  2.957489  1.989712  1.694596  1.694596  \n",
       "7    1.791758  1.710003  1.629904  2.957489  2.940523  1.694596  1.694596  \n",
       "8    1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "9    1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "10   1.713658  1.710003  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "11   1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "12   1.713658  1.691779  1.629904  1.659728  2.940523  1.694596  1.694596  \n",
       "13   1.490182  1.691779  1.793233  1.659728  0.778305  1.694596  1.694596  \n",
       "14   1.791758  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "15   1.713658  1.710003  1.629904  1.659728  2.940523  1.694596  1.694596  \n",
       "16   1.791758  1.710003  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "17   1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "18   1.713658  1.691779  1.629904  1.659728  1.065021  1.694596  1.694596  \n",
       "19   1.791758  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "20   1.713658  1.710003  1.629904  1.659728  2.940523  1.694596  1.694596  \n",
       "21   1.791758  1.710003  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "22   1.791758  1.691779  1.629904  1.659728  1.065021  1.694596  1.694596  \n",
       "23   1.713658  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "24   1.791758  1.710003  1.629904  1.659728  2.940523  1.694596  1.694596  \n",
       "25   1.713658  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "26   1.713658  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "27   1.791758  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "28   1.713658  1.691779  1.629904  1.659728  2.359880  1.694596  1.694596  \n",
       "29   1.713658  1.691779  1.629904  1.659728  0.778305  1.694596  1.694596  \n",
       "..        ...       ...       ...       ...       ...       ...       ...  \n",
       "970  1.490182  1.691779  1.793233  1.659728  0.778305  1.694596  1.694596  \n",
       "971  1.490182  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "972  1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "973  1.713658  1.691779  1.629904  1.659728  0.778305  1.694596  1.694596  \n",
       "974  1.713658  1.691779  1.629904  1.659728  2.940523  1.694596  1.694596  \n",
       "975  1.791758  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "976  1.490182  1.691779  1.793233  2.957489  0.778305  1.694596  1.694596  \n",
       "977  1.490182  1.691779  1.793233  1.659728  2.940523  1.694596  1.694596  \n",
       "978  1.713658  1.691779  1.793233  1.659728  1.989712  1.694596  1.694596  \n",
       "979  1.713658  1.691779  1.793233  1.659728  1.989712  1.694596  1.694596  \n",
       "980  1.713658  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "981  1.713658  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "982  1.490182  1.691779  1.793233  1.659728  0.778305  1.694596  1.694596  \n",
       "983  1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "984  1.713658  1.691779  1.793233  1.659728  0.778305  1.694596  1.694596  \n",
       "985  1.490182  1.691779  1.793233  1.659728  1.989712  1.694596  1.694596  \n",
       "986  1.490182  1.691779  1.793233  2.957489  2.359880  1.694596  1.694596  \n",
       "987  1.713658  1.691779  1.629904  1.659728  1.989712  1.694596  1.694596  \n",
       "988  1.791758  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "989  1.791758  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "990  1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "991  1.490182  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "992  1.713658  1.710003  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "993  1.713658  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "994  1.713658  1.691779  1.793233  1.659728  1.989712  1.694596  1.694596  \n",
       "995  1.791758  1.710003  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "996  1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "997  1.490182  1.691779  1.793233  1.659728  1.585907  1.694596  1.694596  \n",
       "998  1.490182  1.691779  1.793233  1.659728  1.989712  1.694596  1.694596  \n",
       "999  1.713658  1.691779  1.629904  1.659728  1.585907  1.694596  1.694596  \n",
       "\n",
       "[1000 rows x 21 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_woe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:12.717826Z",
     "start_time": "2019-04-01T06:33:12.709826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<woe.feature_process.InfoValue at 0xf9fb9b0>,\n",
       " <woe.feature_process.InfoValue at 0x12d38518>,\n",
       " <woe.feature_process.InfoValue at 0x12d0de10>,\n",
       " <woe.feature_process.InfoValue at 0x14e6eac8>,\n",
       " <woe.feature_process.InfoValue at 0x3038e80>,\n",
       " <woe.feature_process.InfoValue at 0x14d66be0>,\n",
       " <woe.feature_process.InfoValue at 0x14df65f8>,\n",
       " <woe.feature_process.InfoValue at 0x14dab278>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c4a8>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c518>,\n",
       " <woe.feature_process.InfoValue at 0x14e54630>,\n",
       " <woe.feature_process.InfoValue at 0x14e54f28>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c550>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c470>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c080>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c390>,\n",
       " <woe.feature_process.InfoValue at 0x12d1c240>,\n",
       " <woe.feature_process.InfoValue at 0x1514dbe0>,\n",
       " <woe.feature_process.InfoValue at 0x15122ba8>,\n",
       " <woe.feature_process.InfoValue at 0x15159198>]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "civ_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:33:12.810826Z",
     "start_time": "2019-04-01T06:33:12.719826Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "账户状态\n",
      "信用历史付款状况\n",
      "资金用途\n",
      "储蓄情况\n",
      "工作年限\n",
      "分期利率\n",
      "婚姻状况\n",
      "担保机构(类型)\n",
      "现地址居住时间\n",
      "财产状况\n",
      "共同账户(类型)\n",
      "住房类型\n",
      "信用卡数量\n",
      "工作(类型)\n",
      "担保人数量\n",
      "是否有电话\n",
      "是否外籍工作者\n",
      "信用期限(月)\n",
      "信贷金额\n",
      "年龄\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>var_name</th>\n",
       "      <th>iv</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>账户状态</td>\n",
       "      <td>4.192590</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>信用期限(月)</td>\n",
       "      <td>3.601355</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>储蓄情况</td>\n",
       "      <td>3.515406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>信用历史付款状况</td>\n",
       "      <td>3.488409</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>资金用途</td>\n",
       "      <td>3.467544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>财产状况</td>\n",
       "      <td>3.381915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>工作年限</td>\n",
       "      <td>3.345797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>住房类型</td>\n",
       "      <td>3.342397</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>是否外籍工作者</td>\n",
       "      <td>3.296726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>婚姻状况</td>\n",
       "      <td>3.288503</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>共同账户(类型)</td>\n",
       "      <td>3.282517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>分期利率</td>\n",
       "      <td>3.264312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>担保机构(类型)</td>\n",
       "      <td>3.251927</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>信用卡数量</td>\n",
       "      <td>3.246473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>工作(类型)</td>\n",
       "      <td>3.239376</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>是否有电话</td>\n",
       "      <td>3.236643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>现地址居住时间</td>\n",
       "      <td>3.232773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>担保人数量</td>\n",
       "      <td>3.227861</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>信贷金额</td>\n",
       "      <td>3.227801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>年龄</td>\n",
       "      <td>3.227801</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    var_name        iv\n",
       "0       账户状态  4.192590\n",
       "17   信用期限(月)  3.601355\n",
       "3       储蓄情况  3.515406\n",
       "1   信用历史付款状况  3.488409\n",
       "2       资金用途  3.467544\n",
       "9       财产状况  3.381915\n",
       "4       工作年限  3.345797\n",
       "11      住房类型  3.342397\n",
       "16   是否外籍工作者  3.296726\n",
       "6       婚姻状况  3.288503\n",
       "10  共同账户(类型)  3.282517\n",
       "5       分期利率  3.264312\n",
       "7   担保机构(类型)  3.251927\n",
       "12     信用卡数量  3.246473\n",
       "13    工作(类型)  3.239376\n",
       "15     是否有电话  3.236643\n",
       "8    现地址居住时间  3.232773\n",
       "14     担保人数量  3.227861\n",
       "18      信贷金额  3.227801\n",
       "19        年龄  3.227801"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "civ_df = eval.eval_feature_detail(civ_list,'output_feature_detail_0315.csv')\n",
    "# #删除iv值过小的变量\n",
    "iv_thre = 0.005 #IV阈值\n",
    "iv = civ_df[['var_name','iv']].drop_duplicates()\n",
    "iv.index=np.arange(len(iv))\n",
    "iv.sort_values(by=\"iv\" , ascending=False) #全部满足阈值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 建立模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Logistic模型(初步baseline)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:43:26.819826Z",
     "start_time": "2019-04-01T06:43:26.804826Z"
    },
    "code_folding": [],
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# from sklearn.linear_model import stochastic_gradient\n",
    "# sgdc = stochastic_gradient.SGDClassifier()\n",
    "X=data_woe.iloc[:,1:].astype('float')\n",
    "y=data_woe.iloc[:,0].astype('int')\n",
    "train_data,test_data,train_label,test_label=model_selection.train_test_split(X,y,test_size=0.3,random_state=100,stratify=y)\n",
    "# train_label=train_label.reshape(-1,1)\n",
    "# test_label=test_label.reshape(-1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:25:19.850826Z",
     "start_time": "2019-04-01T07:25:19.828826Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
      "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
      "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
      "          tol=0.0001, verbose=0, warm_start=False)\n"
     ]
    }
   ],
   "source": [
    "logis_clf=linear_model.LogisticRegression(solver='liblinear')\n",
    "logis_clf.fit(train_data,train_label) \n",
    "print(logis_clf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:25:25.545826Z",
     "start_time": "2019-04-01T07:25:25.526826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7657142857142857"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logis_clf.score(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:25:28.158826Z",
     "start_time": "2019-04-01T07:25:28.147826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.75"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logis_clf.score(test_data,test_label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**logistic回归的十折交叉验证结果**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:56:46.584826Z",
     "start_time": "2019-04-01T07:56:46.495826Z"
    },
    "code_folding": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.745"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores = model_selection.cross_val_score(logis_clf, X, y,\n",
    "                         scoring=\"accuracy\", cv=10,verbose=False)\n",
    "sum(scores)/10 #十折交叉验证的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T06:57:42.418826Z",
     "start_time": "2019-04-01T06:57:42.404826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['accuracy',\n",
       " 'adjusted_mutual_info_score',\n",
       " 'adjusted_rand_score',\n",
       " 'average_precision',\n",
       " 'balanced_accuracy',\n",
       " 'brier_score_loss',\n",
       " 'completeness_score',\n",
       " 'explained_variance',\n",
       " 'f1',\n",
       " 'f1_macro',\n",
       " 'f1_micro',\n",
       " 'f1_samples',\n",
       " 'f1_weighted',\n",
       " 'fowlkes_mallows_score',\n",
       " 'homogeneity_score',\n",
       " 'mutual_info_score',\n",
       " 'neg_log_loss',\n",
       " 'neg_mean_absolute_error',\n",
       " 'neg_mean_squared_error',\n",
       " 'neg_mean_squared_log_error',\n",
       " 'neg_median_absolute_error',\n",
       " 'normalized_mutual_info_score',\n",
       " 'precision',\n",
       " 'precision_macro',\n",
       " 'precision_micro',\n",
       " 'precision_samples',\n",
       " 'precision_weighted',\n",
       " 'r2',\n",
       " 'recall',\n",
       " 'recall_macro',\n",
       " 'recall_micro',\n",
       " 'recall_samples',\n",
       " 'recall_weighted',\n",
       " 'roc_auc',\n",
       " 'v_measure_score']"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(metrics.SCORERS.keys()) #scoring参数选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调参搜索1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:37:44.827826Z",
     "start_time": "2019-04-01T07:37:43.502826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=10, error_score='raise-deprecating',\n",
       "       estimator=LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid=[{'C': [0.01, 0.02, 0.05, 0.1, 0.5, 1], 'penalty': ['l1', 'l2']}],\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='accuracy', verbose=0)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "param_grid = [\n",
    "    # try 12 (6×2) combinations of hyperparameters\n",
    "    {'C': [0.01, 0.02, 0.05,0.1,0.5,1], 'penalty': ['l1','l2']},\n",
    "  ]\n",
    "# train across 5 folds, that's a total of (12)*5=60 rounds of training \n",
    "grid_search = GridSearchCV(logis_clf, param_grid, cv=10,\n",
    "                           scoring='accuracy', return_train_score=True)\n",
    "grid_search.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**最优参数**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:36:47.503826Z",
     "start_time": "2019-04-01T07:36:47.486826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'C': 1, 'penalty': 'l1'}"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:36:52.761826Z",
     "start_time": "2019-04-01T07:36:52.753826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l1', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:36:53.797826Z",
     "start_time": "2019-04-01T07:36:53.769826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.00259991, 0.00260003, 0.00120001, 0.00190003, 0.00159996,\n",
       "        0.00190001, 0.00769997, 0.00209994, 0.0273001 , 0.00250006,\n",
       "        0.04450004, 0.0027    ]),\n",
       " 'std_fit_time': array([0.00091649, 0.00135654, 0.00040004, 0.00030003, 0.00066328,\n",
       "        0.00030003, 0.00360693, 0.00030003, 0.0062618 , 0.00067088,\n",
       "        0.01330602, 0.00064028]),\n",
       " 'mean_score_time': array([0.00140002, 0.00109997, 0.00080004, 0.00069997, 0.00060003,\n",
       "        0.00039997, 0.00090003, 0.00050004, 0.00049999, 0.00039997,\n",
       "        0.00090001, 0.0007    ]),\n",
       " 'std_score_time': array([0.00091653, 0.00113576, 0.00040002, 0.00045824, 0.00048992,\n",
       "        0.00048986, 0.00030001, 0.00050004, 0.00049999, 0.00048986,\n",
       "        0.0003    , 0.00045826]),\n",
       " 'param_C': masked_array(data=[0.01, 0.01, 0.02, 0.02, 0.05, 0.05, 0.1, 0.1, 0.5, 0.5,\n",
       "                    1, 1],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_penalty': masked_array(data=['l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1', 'l2', 'l1',\n",
       "                    'l2', 'l1', 'l2'],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'C': 0.01, 'penalty': 'l1'},\n",
       "  {'C': 0.01, 'penalty': 'l2'},\n",
       "  {'C': 0.02, 'penalty': 'l1'},\n",
       "  {'C': 0.02, 'penalty': 'l2'},\n",
       "  {'C': 0.05, 'penalty': 'l1'},\n",
       "  {'C': 0.05, 'penalty': 'l2'},\n",
       "  {'C': 0.1, 'penalty': 'l1'},\n",
       "  {'C': 0.1, 'penalty': 'l2'},\n",
       "  {'C': 0.5, 'penalty': 'l1'},\n",
       "  {'C': 0.5, 'penalty': 'l2'},\n",
       "  {'C': 1, 'penalty': 'l1'},\n",
       "  {'C': 1, 'penalty': 'l2'}],\n",
       " 'split0_test_score': array([0.7       , 0.7       , 0.7       , 0.7       , 0.7       ,\n",
       "        0.72857143, 0.74285714, 0.77142857, 0.78571429, 0.81428571,\n",
       "        0.85714286, 0.82857143]),\n",
       " 'split1_test_score': array([0.7       , 0.7       , 0.7       , 0.71428571, 0.7       ,\n",
       "        0.72857143, 0.71428571, 0.74285714, 0.77142857, 0.78571429,\n",
       "        0.77142857, 0.77142857]),\n",
       " 'split2_test_score': array([0.7       , 0.7       , 0.7       , 0.7       , 0.7       ,\n",
       "        0.8       , 0.7       , 0.8       , 0.82857143, 0.84285714,\n",
       "        0.82857143, 0.84285714]),\n",
       " 'split3_test_score': array([0.7       , 0.7       , 0.7       , 0.71428571, 0.7       ,\n",
       "        0.72857143, 0.72857143, 0.74285714, 0.74285714, 0.72857143,\n",
       "        0.72857143, 0.72857143]),\n",
       " 'split4_test_score': array([0.7       , 0.7       , 0.7       , 0.68571429, 0.7       ,\n",
       "        0.75714286, 0.68571429, 0.78571429, 0.75714286, 0.77142857,\n",
       "        0.75714286, 0.75714286]),\n",
       " 'split5_test_score': array([0.7       , 0.7       , 0.7       , 0.71428571, 0.7       ,\n",
       "        0.7       , 0.68571429, 0.72857143, 0.71428571, 0.74285714,\n",
       "        0.74285714, 0.74285714]),\n",
       " 'split6_test_score': array([0.7       , 0.7       , 0.7       , 0.71428571, 0.7       ,\n",
       "        0.71428571, 0.71428571, 0.67142857, 0.68571429, 0.68571429,\n",
       "        0.7       , 0.68571429]),\n",
       " 'split7_test_score': array([0.7       , 0.7       , 0.7       , 0.72857143, 0.7       ,\n",
       "        0.78571429, 0.74285714, 0.78571429, 0.75714286, 0.75714286,\n",
       "        0.75714286, 0.75714286]),\n",
       " 'split8_test_score': array([0.7       , 0.7       , 0.7       , 0.7       , 0.7       ,\n",
       "        0.71428571, 0.7       , 0.72857143, 0.75714286, 0.78571429,\n",
       "        0.77142857, 0.77142857]),\n",
       " 'split9_test_score': array([0.7       , 0.7       , 0.7       , 0.71428571, 0.7       ,\n",
       "        0.78571429, 0.72857143, 0.72857143, 0.68571429, 0.68571429,\n",
       "        0.71428571, 0.7       ]),\n",
       " 'mean_test_score': array([0.7       , 0.7       , 0.7       , 0.70857143, 0.7       ,\n",
       "        0.74428571, 0.71428571, 0.74857143, 0.74857143, 0.76      ,\n",
       "        0.76285714, 0.75857143]),\n",
       " 'std_test_score': array([0.        , 0.        , 0.        , 0.01142857, 0.        ,\n",
       "        0.0334725 , 0.02020305, 0.03625308, 0.04199125, 0.04857143,\n",
       "        0.04615856, 0.04714286]),\n",
       " 'rank_test_score': array([9, 9, 9, 8, 9, 6, 7, 4, 4, 2, 1, 3]),\n",
       " 'split0_train_score': array([0.7       , 0.7       , 0.7       , 0.70952381, 0.7       ,\n",
       "        0.74285714, 0.71111111, 0.75396825, 0.75873016, 0.75555556,\n",
       "        0.75714286, 0.75396825]),\n",
       " 'split1_train_score': array([0.7       , 0.7       , 0.7       , 0.70793651, 0.7       ,\n",
       "        0.74920635, 0.72222222, 0.75555556, 0.76666667, 0.75873016,\n",
       "        0.76666667, 0.76349206]),\n",
       " 'split2_train_score': array([0.7       , 0.7       , 0.7       , 0.70793651, 0.7       ,\n",
       "        0.74603175, 0.71428571, 0.75079365, 0.75238095, 0.75555556,\n",
       "        0.75873016, 0.76031746]),\n",
       " 'split3_train_score': array([0.7       , 0.7       , 0.7       , 0.70793651, 0.7       ,\n",
       "        0.75079365, 0.71746032, 0.75396825, 0.76031746, 0.75873016,\n",
       "        0.76666667, 0.76349206]),\n",
       " 'split4_train_score': array([0.7       , 0.7       , 0.7       , 0.71111111, 0.7       ,\n",
       "        0.74920635, 0.72063492, 0.75873016, 0.76349206, 0.76507937,\n",
       "        0.77142857, 0.76507937]),\n",
       " 'split5_train_score': array([0.7       , 0.7       , 0.7       , 0.70793651, 0.7       ,\n",
       "        0.75079365, 0.73015873, 0.75555556, 0.77460317, 0.76666667,\n",
       "        0.76349206, 0.76349206]),\n",
       " 'split6_train_score': array([0.7       , 0.7       , 0.7       , 0.71111111, 0.7       ,\n",
       "        0.75079365, 0.72222222, 0.77301587, 0.77460317, 0.77460317,\n",
       "        0.78571429, 0.78253968]),\n",
       " 'split7_train_score': array([0.7       , 0.7       , 0.7       , 0.70634921, 0.7       ,\n",
       "        0.74920635, 0.70952381, 0.75555556, 0.75873016, 0.76190476,\n",
       "        0.76349206, 0.76190476]),\n",
       " 'split8_train_score': array([0.7       , 0.7       , 0.7       , 0.70634921, 0.7       ,\n",
       "        0.74444444, 0.71587302, 0.75714286, 0.76666667, 0.76825397,\n",
       "        0.77619048, 0.77460317]),\n",
       " 'split9_train_score': array([0.7       , 0.7       , 0.7       , 0.70952381, 0.7       ,\n",
       "        0.74603175, 0.71746032, 0.75555556, 0.77936508, 0.77301587,\n",
       "        0.77936508, 0.77936508]),\n",
       " 'mean_train_score': array([0.7       , 0.7       , 0.7       , 0.70857143, 0.7       ,\n",
       "        0.74793651, 0.71809524, 0.75698413, 0.76555556, 0.76380952,\n",
       "        0.76888889, 0.7668254 ]),\n",
       " 'std_train_score': array([0.        , 0.        , 0.        , 0.00161874, 0.        ,\n",
       "        0.0027309 , 0.0057319 , 0.00569883, 0.00809524, 0.00649825,\n",
       "        0.00872872, 0.00856113])}"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cvres = grid_search.cv_results_\n",
    "cvres "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**模型代入最优参数**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:36:59.456826Z",
     "start_time": "2019-04-01T07:36:59.333826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l1', random_state=None, solver='liblinear',\n",
       "          tol=0.0001, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logis_clf1=linear_model.LogisticRegression(solver='liblinear',penalty='l1',C=1)\n",
    "logis_clf1.fit(train_data,train_label) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:37:02.237826Z",
     "start_time": "2019-04-01T07:37:02.213826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7685714285714286"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logis_clf1.score(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:37:03.443826Z",
     "start_time": "2019-04-01T07:37:03.429826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7366666666666667"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logis_clf1.score(test_data,test_label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**由上述验证发现效果并不显著，并无较大提升**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:04:15.725826Z",
     "start_time": "2019-04-01T08:04:14.847826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.75"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores_lg = model_selection.cross_val_score(logis_clf1, X, y,\n",
    "                         scoring=\"accuracy\", cv=10,verbose=False)\n",
    "sum(scores_lg)/10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RF模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:02:59.509826Z",
     "start_time": "2019-04-01T08:02:59.464826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9914285714285714"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import ensemble\n",
    "rf_clf=ensemble.RandomForestClassifier(random_state=100)\n",
    "rf_clf.fit(train_data,train_label)\n",
    "rf_clf.score(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:03:02.031826Z",
     "start_time": "2019-04-01T08:03:02.017826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "            max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,\n",
       "            oob_score=False, random_state=100, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_clf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:03:03.916826Z",
     "start_time": "2019-04-01T08:03:03.902826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.72"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_clf.score(test_data,test_label) #预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Random Forest十折交叉验证的结果**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:03:14.620826Z",
     "start_time": "2019-04-01T08:03:14.432826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.718"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores_rf = model_selection.cross_val_score(rf_clf, X, y,\n",
    "                         scoring=\"accuracy\", cv=10,verbose=False)\n",
    "sum(scores_rf)/10 #十折交叉验证的平均值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 调参搜索2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:49:47.652826Z",
     "start_time": "2019-04-01T07:49:42.752826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
       "       estimator=RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "            max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, n_estimators='warn', n_jobs=None,\n",
       "            oob_score=False, random_state=100, verbose=0, warm_start=False),\n",
       "       fit_params=None, iid='warn', n_jobs=None,\n",
       "       param_grid=[{'n_estimators': [3, 10, 30, 50, 100], 'max_features': [2, 4, 6, 8]}, {'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]}],\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='accuracy', verbose=0)"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "param_grid = [\n",
    "    # try 20 (5×4) combinations of hyperparameters\n",
    "    {'n_estimators': [3, 10, 30,50,100], 'max_features': [2, 4, 6, 8]},\n",
    "    # then try 6 (2×3) combinations with bootstrap set as False\n",
    "    {'bootstrap': [False], 'n_estimators': [3, 10], 'max_features': [2, 3, 4]},\n",
    "  ]\n",
    "forest_cl = ensemble.RandomForestClassifier(random_state=100)\n",
    "# train across 5 folds, that's a total of (20+6)*5=130 rounds of training \n",
    "grid_search = GridSearchCV(forest_cl, param_grid, cv=5,\n",
    "                           scoring='accuracy', return_train_score=True)\n",
    "grid_search.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:49:59.930826Z",
     "start_time": "2019-04-01T07:49:59.923826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_features': 6, 'n_estimators': 50}"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid_search.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:50:56.799826Z",
     "start_time": "2019-04-01T07:50:56.681826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_clf1=ensemble.RandomForestClassifier(random_state=100,max_features=6,n_estimators=50)\n",
    "rf_clf1.fit(train_data,train_label)\n",
    "rf_clf1.score(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T07:50:57.538826Z",
     "start_time": "2019-04-01T07:50:57.522826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.75"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_clf1.score(test_data,test_label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**发现虽然调参后rf结果有部分提升，但不如logistic结果好**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T08:05:06.148826Z",
     "start_time": "2019-04-01T08:05:05.503826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.739"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scores_rf1 = model_selection.cross_val_score(rf_clf1, X, y,\n",
    "                         scoring=\"accuracy\", cv=10,verbose=False)\n",
    "sum(scores_rf1)/10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型集成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:35:51.882826Z",
     "start_time": "2019-04-01T09:35:51.865826Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn import svm,neighbors\n",
    "from sklearn import ensemble\n",
    "from sklearn import linear_model\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:36:42.615826Z",
     "start_time": "2019-04-01T09:36:42.602826Z"
    }
   },
   "outputs": [],
   "source": [
    "knn_clf=neighbors.KNeighborsClassifier()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:36:43.820826Z",
     "start_time": "2019-04-01T09:36:43.803826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn_clf.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:25:22.643826Z",
     "start_time": "2019-04-01T09:25:22.543826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\svm\\base.py:931: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
       "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
       "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
       "     verbose=0)"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm_clf=svm.LinearSVC()\n",
    "svm_clf.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:26:17.839826Z",
     "start_time": "2019-04-01T09:26:17.806826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\ensemble\\forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n",
       "            max_depth=None, max_features='auto', max_leaf_nodes=None,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None,\n",
       "            oob_score=False, random_state=None, verbose=0,\n",
       "            warm_start=False)"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf_c=ensemble.RandomForestClassifier()\n",
    "rf_c.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:26:55.964826Z",
     "start_time": "2019-04-01T09:26:55.938826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
      "  FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='warn',\n",
       "          n_jobs=None, penalty='l2', random_state=None, solver='warn',\n",
       "          tol=0.0001, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lg_clf=linear_model.LogisticRegression()\n",
    "lg_clf.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:27:39.249826Z",
     "start_time": "2019-04-01T09:27:39.234826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GaussianNB(priors=None, var_smoothing=1e-09)"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GB_clf=GaussianNB()\n",
    "GB_clf.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T09:28:26.303826Z",
     "start_time": "2019-04-01T09:28:26.290826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,\n",
       "            max_features=None, max_leaf_nodes=None,\n",
       "            min_impurity_decrease=0.0, min_impurity_split=None,\n",
       "            min_samples_leaf=1, min_samples_split=2,\n",
       "            min_weight_fraction_leaf=0.0, presort=False, random_state=None,\n",
       "            splitter='best')"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "DeT_clf=DecisionTreeClassifier()\n",
    "DeT_clf.fit(train_data,train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T10:24:38.979826Z",
     "start_time": "2019-04-01T10:24:38.928826Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:166: FutureWarning: max_iter and tol parameters have been added in Perceptron in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Perceptron(alpha=0.0001, class_weight=None, early_stopping=False, eta0=1.0,\n",
       "      fit_intercept=True, max_iter=None, n_iter=None, n_iter_no_change=5,\n",
       "      n_jobs=None, penalty=None, random_state=0, shuffle=True, tol=None,\n",
       "      validation_fraction=0.1, verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "perceptron = linear_model.Perceptron()\n",
    "perceptron.fit(train_data, train_label)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T10:47:46.404826Z",
     "start_time": "2019-04-01T10:47:46.369826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Cl</th>\n",
       "      <th>Test_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>knn</td>\n",
       "      <td>0.733333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>svm</td>\n",
       "      <td>0.736667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>rf</td>\n",
       "      <td>0.766667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>logistic</td>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Bayes</td>\n",
       "      <td>0.726667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>DT</td>\n",
       "      <td>0.626667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Cl  Test_score\n",
       "0       knn    0.733333\n",
       "1       svm    0.736667\n",
       "2        rf    0.766667\n",
       "3  logistic    0.750000\n",
       "4     Bayes    0.726667\n",
       "5        DT    0.626667"
      ]
     },
     "execution_count": 205,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cl=['knn','svm','rf','logistic','Bayes','DT']\n",
    "testscore=[knn_clf.score(test_data,test_label),svm_clf.score(test_data,test_label),rf_c.score(test_data,test_label),\n",
    "          lg_clf.score(test_data,test_label),GB_clf.score(test_data,test_label),DeT_clf.score(test_data,test_label)]\n",
    "newdf=pd.DataFrame({'Cl':cl,'Test_score':testscore})\n",
    "newdf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T10:43:03.171826Z",
     "start_time": "2019-04-01T10:43:03.057826Z"
    }
   },
   "outputs": [],
   "source": [
    "classfier=['knn','svm','rf','logistic','Bayes','DT','Perception','The_results_ensemble']\n",
    "pred_label_C=pd.DataFrame([knn_clf.predict(test_data),svm_clf.predict(test_data),rf_c.predict(test_data),\n",
    "                        lg_clf.predict(test_data),GB_clf.predict(test_data),DeT_clf.predict(test_data),\n",
    "                         perceptron.predict(test_data)]).T\n",
    "vote_label=[]\n",
    "for line in range(len(pred_label_C)):\n",
    "    line_list=list(pred_label_C.iloc[line,:])\n",
    "    if sum(line_list)> len(line_list)-sum(line_list):\n",
    "        vote_label.append(1)\n",
    "    else:\n",
    "        vote_label.append(0)\n",
    "\n",
    "pred_label=pd.DataFrame(pd.concat([pred_label_C,pd.DataFrame(vote_label)],axis=1))\n",
    "pred_label.columns=classfier\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T10:43:06.357826Z",
     "start_time": "2019-04-01T10:43:06.316826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>knn</th>\n",
       "      <th>svm</th>\n",
       "      <th>rf</th>\n",
       "      <th>logistic</th>\n",
       "      <th>Bayes</th>\n",
       "      <th>DT</th>\n",
       "      <th>Perception</th>\n",
       "      <th>The_results_ensemble</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>270</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>271</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>272</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>273</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>274</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>275</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>276</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>277</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>279</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>280</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>281</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>282</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>283</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>284</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>285</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>286</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>287</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>289</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>290</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>291</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>292</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>293</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>294</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>296</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>297</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>298</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     knn  svm  rf  logistic  Bayes  DT  Perception  The_results_ensemble\n",
       "0      0    1   1         1      0   0           0                     0\n",
       "1      1    1   1         1      1   1           1                     1\n",
       "2      1    1   1         1      1   1           1                     1\n",
       "3      0    0   0         0      0   0           0                     0\n",
       "4      1    1   1         1      1   1           0                     1\n",
       "5      0    0   0         0      0   0           0                     0\n",
       "6      1    1   1         1      1   0           1                     1\n",
       "7      0    1   0         1      0   1           0                     0\n",
       "8      1    1   1         1      1   0           1                     1\n",
       "9      0    1   1         1      1   1           0                     1\n",
       "10     0    0   0         0      0   0           0                     0\n",
       "11     1    1   1         1      1   1           1                     1\n",
       "12     1    1   1         1      1   1           1                     1\n",
       "13     1    1   1         1      1   1           1                     1\n",
       "14     0    0   0         0      0   0           0                     0\n",
       "15     1    1   1         1      1   1           0                     1\n",
       "16     1    1   1         1      0   0           0                     1\n",
       "17     1    1   1         1      1   1           1                     1\n",
       "18     1    1   1         1      1   0           0                     1\n",
       "19     0    0   0         0      0   1           0                     0\n",
       "20     1    1   1         1      1   0           1                     1\n",
       "21     1    1   1         1      1   1           0                     1\n",
       "22     0    1   1         1      1   1           0                     1\n",
       "23     0    1   0         1      0   1           0                     0\n",
       "24     1    1   1         1      1   1           1                     1\n",
       "25     1    1   1         1      1   1           1                     1\n",
       "26     0    1   1         1      1   1           1                     1\n",
       "27     0    0   0         0      0   1           0                     0\n",
       "28     1    1   1         1      1   1           0                     1\n",
       "29     1    1   1         1      0   1           0                     1\n",
       "..   ...  ...  ..       ...    ...  ..         ...                   ...\n",
       "270    0    1   1         1      0   1           0                     1\n",
       "271    1    1   1         1      1   1           1                     1\n",
       "272    1    1   1         1      1   1           1                     1\n",
       "273    1    1   1         1      1   1           0                     1\n",
       "274    1    1   1         1      1   1           1                     1\n",
       "275    1    1   1         1      1   1           0                     1\n",
       "276    1    1   1         1      1   0           0                     1\n",
       "277    0    1   0         1      0   1           0                     0\n",
       "278    1    0   0         0      1   1           0                     0\n",
       "279    1    0   0         1      0   0           0                     0\n",
       "280    0    0   0         0      0   0           0                     0\n",
       "281    1    1   1         1      1   1           1                     1\n",
       "282    0    0   0         0      0   0           0                     0\n",
       "283    1    1   1         1      1   0           1                     1\n",
       "284    1    1   1         1      1   1           1                     1\n",
       "285    1    1   1         1      1   0           0                     1\n",
       "286    1    1   1         1      1   1           1                     1\n",
       "287    1    1   1         1      1   1           1                     1\n",
       "288    1    1   1         1      1   1           0                     1\n",
       "289    0    0   0         1      1   0           0                     0\n",
       "290    1    1   1         1      1   1           1                     1\n",
       "291    0    1   0         1      1   0           0                     0\n",
       "292    0    0   0         0      0   0           0                     0\n",
       "293    1    0   0         0      1   1           0                     0\n",
       "294    1    1   1         1      0   1           0                     1\n",
       "295    1    0   1         1      0   1           0                     1\n",
       "296    1    1   1         1      1   1           1                     1\n",
       "297    1    1   1         1      1   1           1                     1\n",
       "298    1    1   1         1      1   1           0                     1\n",
       "299    1    0   0         0      0   1           0                     0\n",
       "\n",
       "[300 rows x 8 columns]"
      ]
     },
     "execution_count": 194,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pred_label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-04-01T10:46:16.728826Z",
     "start_time": "2019-04-01T10:46:16.717826Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7633333333333333"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(pred_label.The_results_ensemble[np.array(pred_label.The_results_ensemble)==np.array(test_label)])/len(test_label)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "看出集成效果并不好，没有rf单独模型的结果好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "197px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
